$re = '/(?\'start\'\{\n)|((?\'line\' (?U)(".*")\: (".*")(?-U),?\n))|(?\'end\'\})/m';
$str = '{
"word1": "category1",
"word2": "category2",
"word3": "category3",
"word4": "category4",
"word5": "category5",
"word6": "category6",
"word7": "category7"
}';
$subst = "${start:+CASE\n}${line:+ WHEN $4 THEN $5\n}${end:+ ELSE \"other\"\nEND}";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php