предварительный матч для замены HTML-тегов - PullRequest
0 голосов
/ 02 июля 2010

Использование preg match для выбора

&lttable align='center' id='tbl_currency'&gt &lttr&gt &ltspan class=bld&gt631.0075 USD&lt/span&gt

просто хочу выбрать этот номер и валюту 631.0075 USD

Это число и валюта являются динамическими,

Возможно ли,

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Никогда не используйте регулярные выражения, всегда используйте парсер:

$htmlfragment = "<table align='center' id='tbl_currency'> <tr> <td><span class=bld>631.0075 USD</span></td></tr></table>";

$domdoc = new DomDocument();
$domdoc->loadHTML($htmlfragment);

$xpath = new DOMXPath($domdoc);
$result = $xpath->query("//table[@id='tbl_currency']//span[@class='bld']");

if ($result->length > 0) {
  $currency_span = $result->item(0);
  print $currency_span->nodeValue;
} else {
  print "nothing found";
}

печать

631.0075 USD

Оберните это в функцию, и все готово.

Возможно, вы захотите просмотреть учебник по XPath , если вы никогда ранее не использовали XPath.

0 голосов
/ 02 июля 2010

Использование регулярных выражений для извлечения данных из источников HTML вызывает недовольство в стеке.Пожалуйста, рассмотрите возможность использования html-парсера для этой задачи (например, SimpleHTMLDom ).

Если вы хотите сделать это один раз, быстро и очень грязно, возможно, вы можете обойтись чем-то вроде

"<span class=bld>([^<]*)</span>"

Предполагается, что все и только все интересующие вас значения валют содержатся в тегах span, с классом bld и без других атрибутов.

...