PHP karmaşık etiketler arasında metin alın

3 Cevap php

Ben 2 html etiketleri arasında metin almak için çalışıyorum, sadece zorluk etiket adı farklı olabilir.

Ben detaya anlatacağım:

<icon displayid="62115">inv_helmet_130</icon>

Ben almak zorunda

inv_helmet_130

Ama displayid etiketi, bu nasıl çözüleceği ile ilgili herhangi bir fikir farklı olabilir? Belki normal bir explression ile ama o iyi değilim.

Şimdiden teşekkürler.

3 Cevap

Simple HTML DOM Parse r ki işlemek mümkün olmalıdır:

$html = file_get_html('http://www.example.com/');

foreach($html->find('icon') as $element) 
       echo $element->innertext . '<br>';

Bu gibi onları tek tek yapabilirsiniz:

echo $html->find('icon', 0)->innertext; // get me the first

Do not HTML ile başa çıkmak için bir normal ifadeler kullanın.

Özellikle XPath yerine gibi XML / HTML için tasarlanmış bir şey kullanın. Zaten PHP's libraries parçasıdır.

İstediğiniz XPath ifadesi, bu satırlar boyunca bir şey için gidiyor

//icon/text()

"Ne olursa olsun id veya anne-babanın, belgedeki icon öğe metni seçin.", Okur

<icon> geçerli bir HTML etiketi olmadığı için, ben XML veya başka bir işaretleme dili ile çalışıyoruz sanırım. PHP XML ile başa çıkmak için oldukça kullanışlı bir uzantısı vardır:

<?php

$xml = simplexml_load_string('<?xml version="1.0"?><icon displayid="62115">inv_helmet_130</icon>');
echo (string)$xml[0];

?>

Tam kodu, tabii ki, tam dize bağlıdır. Önerildiği gibi, bir XPath arama hile yapabilirsiniz.