2014-07-10 3 views
1

Может ли simplehtmldom использоваться для определения внутреннего содержимого DIV (а не атрибута), равного значению $_POST?с помощью simplehtmldom для поиска внутреннего содержимого

мне нужно проверить, что DIV с внутренним содержанием позволяет говорить John doe уже не существует до того, как страница изменена с помощью FWRITE - значение сравнивается с будет дано simplehtmldom значением $_POST. Ничего из этого не происходит в/через базу данных, и если я пропустил что-то, что обращается к этому в докторе simplehtmldom, то извините заранее, я просто этого не видел.

Предполагая, что: $_POST['data'] = "John Doe"; и текущая страница:

<div id="aaa"> John Doe </div> 
<div id="bbb"> Jane Doe </div> 
<div id="ccc"> Mike Doe</div> 

бы это ниже работы, чтобы найти DIV с внутренним содержанием "John Doe"?

$html = file_get_html("$_SERVER['PHP_SELF']"); 
$result = $html->find("$_POST['data']"); 
if ($result !=="") {do this....} else {do this instead...} 
+0

Почему бы вам не сделать это с помощью JS? –

+0

Есть еще некоторая обработка PHP, которая должна быть выполнена в зависимости от того, найден ли контент, мне не удавалось в прошлом передавать JS-значения в PHP. Но я рассмотрю ваше предложение, если простой ххтмлдом не будет работать. Спасибо – DMSJax

ответ

1

Да, это в документации относительно получения текстов внутри тега. Вам нужно использовать атрибут ->innertext. Просто проверьте, существует ли это конкретное значение, используя stripos().

Пример:

$found = false; 
foreach($html->find('div') as $div) { 
    if(stripos($div->innertext, $_POST['data']) !== false) { 
     $found = true; 
    } 
} 

if($found) { 
    // john doe exists 
} else { 
    // he doesn't exist in each div 
} 

Мои личные предпочтения:

$dom = new DOMDocument(); 
$dom->loadHTMLFile('your_url'); 
$xpath = new DOMXpath($dom); 
if($xpath->query('//div[contains(., "'.$_POST['data'].'")]')->length > 0) { 
    // john doe is there 
} else { 
    // john doe isn't 
} 
+0

Хмм, я не думаю, что это действительно имеет значение с помощью simple_html_dom – pguardiario

+0

@pguardiario на первый взгляд ваш ответ кажется лучшим и встроенным в то, что я спросил, но независимо от того, как я это сделал, я продолжал получать сообщения об ошибках PHP from advanced_html_dom.php. Поскольку ответ KEvins работал, я принял его, хотя его не просто/advance_html_dom – DMSJax

1

Простой не может сделать это. Вы хотите перейти на this one и выполните:

$html->find('div[text=" John Doe "]', 0); 
+0

ничего себе тоже очень хорошо, это я впервые увидел это. по пути, у вас есть ссылка на документацию? я хотел бы узнать больше об этом. ваш автор этого? – user1978142

+0

Ну, документация будет такой же, потому что она должна быть заменой, но да, есть такие вещи, которые недокументированы. Лучшая документация должна быть [w3c css specs] (http://www.w3.org/TR/selectors/). – pguardiario

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