jak sprytnie zamienić & na & amp;?
Zdarza się, że w tekstach jakie przygotowujemy do wyświetlania na stronach WWW część tzw. entycji jest już zakodowana poprawnie, a część nie. Mnie zdarzyło się tak ze znaczkiem &, który normalnie powinien w XMLu i XHTMLu być kodowany jako & Niektóre ampersandy były zakodowane, ale większość pozostała w formie “wizualnej”, czyli jednego znaku. Parser XMLa tego nie lubi. Ja nie lubię dłubania. Lubię za to wyrażenia regularne, więc takim oto krótkim poleceniem zamieniam wszystkie nieprawidłowo zakodowane ‘&’ na prawidłowe ‘&’, pozostawiając bez zmian te dobrze zapisane:
$tekst = preg_replace('/&(?!amp;)/', '&', $tekst);
W wyrażeniu regularnym użyłem przewidywania czyli poprosiłem o takie pasujące fragmenty, po których nie następuje ciąg “amp;”. Proste.
Przy okazji okazało się, że wordpress ma problem z zapisaniem & w tytule posta… :)

