как использовать регулярное выражение с функцией preg_match_all для получения строки - PullRequest
0 голосов
/ 25 ноября 2011

Какой код регулярного выражения можно использовать, чтобы найти HTML-тег, а затем извлечь из него строку?

<?php 

$html = "<span class="equipped">360</span>"
$match = preg_match("???", $html, $matches);

?>

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

Как указывает npinti, вы не должны использовать регулярное выражение для разбора нерегулярного языка.Вместо этого вы можете использовать PHP DOMDocument , чтобы найти текст любого нужного вам узла.Вот пример для захвата внутреннего текста элемента <span> и демонстрация, чтобы показать, как он работает.

$html = "<span>Text</span>";
$doc = new DOMDocument();
$doc->loadHTML( $html);

$elements = $doc->getElementsByTagName("span");
foreach( $elements as $el)
{
    echo $el->nodeValue . "\n";
}

Демо

Редактировать: Мой пример показывает использование полу-полного HTML-документа, но DOMDocument также успешно проанализирует HTML-строку, такую ​​как $html = '<span>Text</span>';, см. здесь .

0 голосов
/ 25 ноября 2011

Вы никогда не должны анализировать HTML с регулярными выражениями ... вы найдете множество здесь причин, по которым вам не следует этого делать.

Вы можете взглянуть на это предыдущий пост SO, где обсуждаются различные фреймворки, которые позволяют обрабатывать HTML через PHP, такие как phpQuery и QueryPath .

...