У меня есть код, который выглядит следующим образом в строке:
$code = "<html>
<body>
(if(foo == 10 || (foo == 20 && bar == 30))
(foo(something)foo)
)if)
</body>
</html>";
Как я могу разбить строку, чтобы получить в результате:
array(
"<html>\n<body>",
"(if(",
"foo == 10 || (foo == 20 && bar == 30))"" ",
"(foo(",
"something",
")foo)",
")if)",
"</body>\n</html>");
пока у меня есть это:
$tokens = preg_split("/(\(\w+\(|\)\w+\))/", $code, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
echo json_encode($tokens);
но в ответ я получил это:
["\r\n\r\n\r\n","(if(","foo == 10 || (foo == 20 && bar == 30))\r\n ","(foo(","something",")foo)","\r\n",")if)","\r\n<\/body>\r\n<\/html>\r\n"]
<html>
а также <body>
отсутствует, что не так с моим кодом?
Страница была HTML, и это <html>
а также <body>
был интерпретирован как HTML, поэтому он не обнаружился. Установка content-type решает проблему:
header('Content-Type: text/plain');
Других решений пока нет …