Как извлечь значение тега ввода HTML с помощью PHP

Я знаю, что regex не популярен здесь, что лучший способ состоит в том, чтобы извлечь значение входного тега в HTML-форме с помощью сценария PHP?

например:

некоторые отделения/таблицы и т.д.

<form action="blabla.php" method=post>

<input type="text" name="campaign">  
<input type="text" name="id" value="this-is-what-i-am-trying-to-extract">

</form>

некоторые отделения/таблицы и т.д.

Спасибо

5
задан Jim 14 July 2010 в 19:15
поделиться

4 ответа

Если вы хотите извлечь некоторые данные из некоторой строки HTML, лучшим решением часто является работа с классом DOMDocument , который может загружать HTML в дерево DOM.

Затем вы можете использовать любой способ извлечения данных, связанный с DOM, например, XPath запросы.


Здесь вы можете использовать что-то вроде этого:

$html = <<<HTML
    <form action="blabla.php" method=post>

    <input type="text" name="campaign">  
    <input type="text" name="id" value="this-is-what-i-am-trying-to-extract">

    </form>
HTML;


$dom = new DOMDocument();
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('//input[@name="id"]');
foreach ($tags as $tag) {
    var_dump(trim($tag->getAttribute('value')));
}

И вы получите:

string 'this-is-what-i-am-trying-to-extract' (length=35)
14
ответ дан 18 December 2019 в 10:41
поделиться
$html=new DOMDocument();
$html->loadHTML('<form action="blabla.php" method=post>
    <input type="text" name="campaign">  
    <input type="text" name="id" value="this-is-what-i-am-trying-to-extract">
    </form>');

$els=$html->getelementsbytagname('input');

foreach($els as $inp)
  {
  $name=$inp->getAttribute('name');
  if($name=='id'){
    $what_you_are_trying_to_extract=$inp->getAttribute('value');
    break;
    }
  }

echo $what_you_are_trying_to_extract;
//produces: this-is-what-i-am-trying-to-extract
2
ответ дан 18 December 2019 в 10:41
поделиться

Разместите форму на странице php. Требуемое значение будет в $ _POST ['id'].

0
ответ дан 18 December 2019 в 10:41
поделиться

Что вы имеете в виду, что regex не популярен? Я, например, люблю регулярные выражения.

В любом случае, вам нужно что-то вроде:

$contents = file_get_contents('/path/to/file.html');
preg_match('/value="(\w+)"/',$contents,$result);
0
ответ дан 18 December 2019 в 10:41
поделиться
Другие вопросы по тегам:

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