Получите страницу HTML <вход> значения и имена с помощью regex на PHP

Будьте осторожным ожидаемым исключением использования, потому что оно только утверждает, что метод выдал то исключение, не конкретная строка кода в тесте.

я склонен использовать это для тестирования проверки параметра, потому что такие методы являются обычно очень простыми, но более сложными тестами, мог бы лучше быть подан с:

try {
    methodThatShouldThrow();
    fail( "My method didn't throw when I expected it to" );
} catch (MyException expectedException) {
}

Применяют решение.

5
задан Pedro Cunha 8 July 2009 в 22:02
поделиться

3 ответа

Если вы думаете, что мне следует использовать не регулярное выражение, а что-то вроде xpath, скажите как.
Это будет что-то вроде
<?php
$doc = new DOMDocument;
if ( !$doc->loadhtml($contents) ) {
  echo 'something went wrong';
}
else {
  $xpath = new DOMXpath($doc);
  foreach($xpath->query('//form[@name="aspnetForm"]//input') as $eInput) {
      echo 'name=', $eInput->getAttribute('name'), ' value=', $eInput->getAttribute('value'), "\n";
  }
}

Если вы получаете раздражающие предупреждающие сообщения, вы можете использовать @ $ doc-> loadhtml ($ contents); возможно, в сочетании с libxml_use_internal_errors () и libxml_get_errors ()

8
ответ дан 13 December 2019 в 05:40
поделиться

Как насчет этого -> http://simplehtmldom.sourceforge.net/

*  A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way!
* Require PHP 5+.
* Supports invalid HTML.
* Find tags on an HTML page with selectors just like jQuery.
* Extract contents from HTML in a single line.

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

// Find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>'; 

Удачи.

3
ответ дан 13 December 2019 в 05:40
поделиться

Хорошо. Поскольку вы спросили: вам не следует пытаться анализировать нерегулярные языки с помощью регулярных выражений. Простая эвристика: если язык кажется «вложенным», он не является обычным.

Одним из простых способов может быть что-то вроде следующих строк:

$htmldoc = new DOMDocument;
$htmldoc->loadHTMLFile("local_secure.html");
$forms = $htmldoc->getElementsByTagName("form");
$inputs = $forms->item(0)->getElementsByTagName("input");

foreach ($inputs as $input)
  { do_something_with($input->getAttribute("name"));
    do_something_with($input->getAttribute("value")); };

Добавьте проверки ошибок по своему усмотрению. Дополнительная документация: http://www.php.net/book.dom

1
ответ дан 13 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: