2012-07-09 15 views
14

साथ अधिक महत्व देते हैं मैं PHP DOMDocument के साथ एक टैग की विशेषता के मान बदलना चाहते हैं।टैग बदलें पीएचपी DOMDocument

उदाहरण के लिए, कहते हैं कि हम एचटीएमएल की इस पंक्ति है:

$dom = new domDocument; 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

मैं "href" मान "बदलना चाहते हैं:

<a href="http://foo.bar/">Click here</a> 

मैं इस प्रकार PHP में ऊपर कोड को लोड http://google.com/ "PHP के DOMDocument एक्सटेंशन का उपयोग करना। क्या यह संभव है?

हमेशा की तरह मदद के लिए धन्यवाद! बहुत sooo

उत्तर

21
$dom = new DOMDocument(); 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

foreach ($dom->getElementsByTagName('a') as $item) { 

    $item->setAttribute('href', 'http://google.com/'); 
    echo $dom->saveHTML(); 
    exit; 
} 
+0

धन्यवाद! – apparatix

4
$dom = new domDocument; 
$dom->loadHTML('<a href="http://foo.bar/">Click here</a>'); 

$elements = $dom->getElementsByTagName('a'); 

if($elements instanceof DOMNodeList) 
    foreach($elements as $domElement) 
     $domElement->setAttribute('href', 'http://www.google.com/'); 
+1

उपरोक्त क्योंकि आपने एक प्रकार की जांच शामिल की है, लेकिन कृपया याद रखें कि सी-जैसी भाषाओं में * हमेशा * एक सशर्त या लूप को घुंघराले ब्रेसिज़ में संलग्न करने का अच्छा विचार है, भले ही यह केवल एक कथन है (यदि आप बाद में जोड़ते हैं एक और बयान और ब्रेसिज़ जोड़ने के लिए भूल जाओ, यह * देखो * जैसा कि यह वास्तव में नहीं है जब यह शरीर का हिस्सा है; इससे वास्तव में मुश्किल से खोजने वाली बग हो सकती है)। – ebohlman

+0

ठीक है। धन्यवाद – iDexter

+0

टाइप चेक वास्तव में यहां काफी बेकार है; 'DOMDocument :: getElementsByTagName' हमेशा 'DOMNodeList' देता है, इसलिए' if' block हमेशा चलाया जाएगा। – cspray

संबंधित मुद्दे