$html = file_get_html('page.php'); foreach($html->find('p') as $tag_name) { $attr = substr($tag_name->outertext,2,strpos($tag_name->outertext, ">")-2); $tag_name->outertext = str_replace($attr, "", $tag_name->outertext); } echo $html->innertext;
Выше приведен код, который я написал, чтобы взять то, что находится внутри всех тегов <p>
на моей странице html, и удалить их.
<p class="..." id = "..." style = "...">some text...</p> <p class="..." id = "..." style = "...">some text...</p> <p class="..." id = "..." style = "...">some text...</p> <font> <p class="..." id = "..." style = "...">some text ...</p> <p class="..." id = "..." style = "...">some text ...</p> </font> <p class="..." id = "..." style = "...">some text...</p>
<p>some text...</p> <p>some text...</p> <p>some text...</p> <font> <p class="..." id = "..." style = "...">some text ...</p> <p class="..." id = "..." style = "...">some text ...</p> </font> <p>some text...</p>
Он не удаляет атрибуты тегов <p>
которые находятся внутри <font>
.
Если кто-нибудь сможет мне помочь, я буду признателен.
Когда я использую ваш код и пример HTML, он удаляет все атрибуты из всех тегов <p>
, даже те, что внутри <font>
, поэтому я не уверен, почему вы не работаете.
Но похоже, что у simplehtmldom есть методы, которые специфически относятся к атрибутам, поэтому вам не нужно использовать строковые функции:
$html = file_get_html('page.php'); foreach($html->find('p') as $p) { foreach ($p->getAllAttributes() as $attr => $val) { $p->removeAttribute($attr); } } echo $html->innertext;
Надеюсь, это будет более эффективно.