Хорошо, я проверил и посмотрел, но сегодня мой SearchFU не силен. Я сталкиваюсь с ошибкой с обратными ссылками в некоторых регулярных выражениях preg_replace('~$\s*<div>([^<]*?)</div>$\s*~me', '\1', $source);
Я мог бы действительно использовать руку с. Выражение находит <div>
тэги и возвращает только контент, удаляющий тэг и заключающий перевод строки. то есть:
<td>
<div>some value</div>
</td>
становится
<td>some value</td>
Все работает нормально пока <div> </div>
что приводит к:
Parse error: syntax error, unexpected '&' in D:\wamp\www\processfile.php(18)
: regexp code on line 1 Call Stack: 0.0010 143600 1. {main}()
D:\wamp\www\processfile.php:0 0.0350 170328 2. preg_replace()
D:\wamp\www\processfile.php:18 Fatal error: preg_replace(): Failed evaluating
code: in D:\wamp\www\processfile.php on line 18 Call Stack: 0.0010 143600
1. {main}() D:\wamp\www\processfile.php:0 0.0350 170328 2. preg_replace()
D:\wamp\www\processfile.php:18
Если я удаляю обратную ссылку \ 1, выражение удачно удалит все содержимое тегов div, но, похоже, захочет проанализировать его как новое выражение.
Есть ли способ обойти это, или я должен просто предварительно обработать &перед тем, как эта строка будет выполнена?
Это e
модификатор в конце вашего регулярного выражения. Это вызывает замену eval()
«Ред. Убери это:
preg_replace('~$\s*<div>([^<]*?)</div>$\s*~m', '\1', $source);
Увидеть PHP документы для модификаторов PCRE.
Других решений пока нет …