Mam funkcję, która zastępuje atrybut href kotwicy w ciągu za pomocą DOMDocument Php. Oto fragment:Jak uniemożliwić DOMDocument Php na kodowanie encji html?
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($text);
$anchors = $doc->getElementsByTagName('a');
foreach($anchors as $a) {
$a->setAttribute('href', 'http://google.com');
}
return $doc->saveHTML();
Problemem jest to, że loadHTML ($ text) otacza $ tekst DOCTYPE html, body itd tagi. Próbowałem pracować wokół to w ten sposób zamiast loadHTML():
$doc = new DOMDocument('1.0', 'UTF-8');
$node = $doc->createTextNode($text);
$doc->appendChild($node);
...
Niestety, ten koduje wszystkie podmioty (kotwy w komplecie). Czy ktoś wie, jak to wyłączyć? Dokładnie przejrzałem dokumenty i próbowałem je zhakować, ale nie mogę tego rozgryźć.
Dzięki! :)
loadHTML, nie występuje tłumaczenie encji. Skończyłem hacking wokół problemu w wątły sposób, uruchamiając mb_substr ($ text, 122, -19); na wynik z $ doc-> saveHTML(). Yikes! :) $ tekst jest tłumaczonym ciągiem znaków z znacznikami zakotwiczenia miejsca, więc wymiana musi zostać wykonana w czasie wykonywania.Wolałbym nie parsować całego dokumentu, ponieważ byłoby trudno przetworzyć tylko przetłumaczone linki. Dobry pomysł. – thesmart