2016-08-05 4 views
4
$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-страницы и удалить их.
PHP простой HTML DOM удалить все атрибуты из тега HTML


Мой 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> 


Если я запускаю код PHP, результат будет таким:

<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> ,
Если кто-нибудь может мне помочь, я буду признателен.

ответ

2

Когда я использую свой код и пример HTML, он делает удалить все атрибуты из всех <p> тегов, даже те, которые внутри <font>, так что я не знаю, почему твоя не работает.

Но, похоже, simplehtmldom has methods что конкретно дело с атрибутами, так что вы не должны использовать строковые функции:

$html = file_get_html('page.php'); 


foreach($html->find('p') as $p) { 
    foreach ($p->getAllAttributes() as $attr => $val) { 
     $p->removeAttribute($attr); 
    }  
} 
echo $html->innertext; 

Хотелось бы надеяться, что будет более эффективным.

+0

TNX 4 ур ответ, но он дает мне сообщение об ошибке: Предупреждение: неверный аргумент для foreach() ((для второго foreach)) – SAM

+0

@SAM Я отредактировал ответ, исправить ошибку. Попробуй еще раз попробовать? –