मेरे पास एक ऐसा फ़ंक्शन है जो php के DOMDocument का उपयोग करके स्ट्रिंग में एंकर 'href विशेषता को प्रतिस्थापित करता है। यहाँ एक टुकड़ा है:मैं एचपीएमएल इकाइयों को एन्कोडिंग से PHP के DOMDocument को कैसे रोकूं?
$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();
समस्या यह है कि loadHTML ($ पाठ) doctype, एचटीएमएल, शरीर, आदि टैग में $ पाठ चारों ओर से घेरे है। मैं इस के आसपास loadHTML इस के बजाय() करने से काम कर की कोशिश की:
$doc = new DOMDocument('1.0', 'UTF-8');
$node = $doc->createTextNode($text);
$doc->appendChild($node);
...
दुर्भाग्य से, यह सभी संस्थाओं को कूटबद्ध (एंकर शामिल)। क्या कोई इसे जानता है कि इसे कैसे बंद करें? मैंने पहले से ही दस्तावेज़ों को पूरी तरह से देखा है और इसे हैकिंग करने का प्रयास किया है, लेकिन इसे समझ नहीं सकता है।
धन्यवाद! :)
लोड HTML, कोई इकाई अनुवाद नहीं होता है। मैं mb_substr ($ text, 122, -19) चलाकर समस्या को चारों ओर एक कमजोर तरीके से हैकिंग समाप्त कर दिया; $ doc-> saveHTML() से परिणाम पर। ओह! :) $ टेक्स्ट स्थान-धारक एंकर टैग के साथ एक अनुवादित स्ट्रिंग है, इसलिए प्रतिस्थापन रन टाइम के दौरान किया जाना चाहिए।मैं पूरे दस्तावेज़ को पार्स नहीं करना चाहूंगा क्योंकि केवल अनुवादित लिंक को पार्स करना मुश्किल होगा। हालांकि अच्छा विचार है। – thesmart