preg-replace, строгий xhtml, php и ошибка амперсанда - PullRequest
0 голосов
/ 20 апреля 2011

Интересно, есть ли удобный preg_replace или аналогичная функция, которая изменит все мои & на &, но не изменит & на & (не изменит &, который уже находится правильный формат).

У меня проблема с отображением страницы, на которой (пользователь отправил) &, и я хотел изменить ее (из блока текста, извлеченного из mysql) непосредственно перед отображением на странице.

Помощь будет оценена. Приветствия.

PS: я подумал об использовании str_replace с символом & с пробелом по обе стороны, но потом перестал думать об опечатках типа Bob &Jenny вместо Bob & Jenny (так как пользователь отправил).

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Для этого можно использовать утверждение ?!:

$html = preg_replace('/&(?!#?\w+;)/', "&", $html);
              # or just (?!amp;)

Это также пропускает существующие & amp; и другие & lt; или {сущности. Но это, конечно, не безупречно.

0 голосов
/ 20 апреля 2011
...