Замените все & на & только, если за ними не следует amp; - PullRequest
1 голос
/ 06 июня 2011

Хорошо, я не настолько умен в регулярном выражении, вот что я просто пытаюсь сделать

В основном, у меня есть строка с некоторыми уже закодированными сущностями, но мне нужно также снова закодировать ВСЕ сущности, КРОМЕ сущности &, поэтому, если у нас есть строка

The Sun & Mars are planets

Он останется прежним, потому что нам не нужно кодировать & в & снова

Но если у нас будет

The Sun — big hot planet

Это должно стать

The Sun — big hot planet

Я знаю, что это глупо, но это то, что хочет один парсер ..

Ответы [ 3 ]

14 голосов
/ 06 июня 2011

Просто сделайте две замены:

  1. Заменить & на &
  2. Заменить & на &
8 голосов
/ 06 июня 2011

Вы можете использовать отрицательный прогноз, чтобы соответствовать «&», а не «amp;».

$str = preg_replace( "/&(?!amp;)/", "&",  $str  );
0 голосов
/ 06 июня 2011

Ммм, я думаю, что лучший способ решить эту проблему - использовать функцию php htmlspecialchars, здесь это справочная страница .Обычно вам нужно отключить doble_encode (поставить false), чтобы уже существующие html-сущности больше не анализировались.

...