2013-08-23 4 views
0

у меня есть:simple_html_dom найти все элементы, которые содержат только определенный текст

<span>something or other</span> 
<b>blarg</b> 
<b>blarg and stuff</b> 
<span>blarg</span> 
<em>wakka wakka</em> 
<em>wakka blarg</em> 
<em>blarg</em> 

и я просто хочу, чтобы получить элементы, которые содержат только «blarg» и никакого другого текста, так:

<b>blarg</b> 
<span>blarg</span> 
<em>blarg</em> 

Важная проблема здесь в том, что я пытаюсь проверить, существует ли blarg внутри одного элемента на странице или нет. Мне было повезло с регулярным выражением, но я бы предпочел сделать это с помощью simple_html_dom, чтобы я мог смотреть на дочерние и дочерние элементы.

Кто-нибудь знает, что является самым простым способом сделать это с помощью simple_html_dom?

+1

[Что вы пробовали?] (http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+1

, пожалуйста, обратитесь к этот вопрос уже ответил. Надеюсь, это поможет. http://stackoverflow.com/questions/15741644/php-simple-html-dom-parser-finding-specific-text – Tushar

ответ

0

способ сделать это, чтобы разобрать каждый тег, и тест, если он содержит «blarg» ...

Вот рабочий пример:

$text = '<span>something or other</span> 
<b>blarg</b> 
<b>blarg and stuff</b> 
<span>blarg</span> 
<em>wakka wakka</em> 
<em>wakka blarg</em> 
<em>blarg</em>'; 

echo "<div>Original Text: <xmp>$text</xmp></div>"; 

$html = str_get_html($text); 

// Find all elements 
$tags = $html->find('*'); 

foreach ($tags as $key => $tag) { 
    // If text in tag contains 'blarg' 
    if (strcmp(trim($tag->plaintext),'blarg') == 0) { 
     echo "<div> 'blarg' found in \$tags[$key]: <xmp>".$tag->outertext."</xmp></div>"; 
    } 
} 

Я не знаю, что вы это может быть началом :)

+0

Это похоже на мой лучший выбор, но я думал, что будет что-то более короткое и более чистое встроенный в simple_html_dom. Я думал, что есть способ использовать find() самостоятельно, без необходимости цитировать все элементы? – zoltar

+0

AFAIK, там нет ... Я просто нашел много вопросов с подобными ответами ... http://stackoverflow.com/questions/5465690/php-simple-html-dom-parser-find-string – Enissay

+0

Я пытаюсь метод, Enissay, но он не находит «blarg», хотя я знаю, что он есть (у меня вывод HTML). По какой-либо причине вы можете думать об этом? Я пробовал прописные, строчные буквы и т. Д., Чтобы убедиться, что они еще не найдены. – zoltar

Смежные вопросы