Мне нужно сделать несколько (вложенных) текстовых замен (например, обернуть все найденные строки тегом SPAN для подсветки) кучей регулярных выражений, но ... см. Код:
<?php
// Sample workaround code:
$html = "hello world";
$regex_array = array(
'/world/i',
'/hello world/i'
);
foreach ( $regex_array as $regex ) {
if ( preg_match_all($regex, $html, $matches) ) {
foreach ( $matches[0] as $match ) {
$html = str_replace($match, '<span>' . $match . '</span>', $html);
}
}
}
print '<h4>Result:</h4>'
. htmlentities($html, ENT_QUOTES, 'utf-8');
print '<h4>Expected result:</h4>'
. htmlentities('<span>hello <span>world</span></span>', ENT_QUOTES, 'utf-8');
Результат:
hello <span>world</span>
но ожидаемый результат:
<span>hello <span>world</span></span>
Как я могу это сделать?
Да, я мог бы изменить порядок правил регулярных выражений, и это могло бы решить проблему, но я действительно НЕ МОГУ СДЕЛАТЬ ЭТО!