Preg_match在<a> and </a>之间提取文本

时间:2014-03-10 16:36:50

标签: regex preg-match

我的代码类似于:

<a href="http://www.allegro.pl/show_item.php?item=3069353216" target="_blank">Buty trekkingowe Chiruca Tasmania 12 GTX roz. 44</a> 

现在我想从中提取: Buty trekkingowe Chiruca Tasmania 12 GTX roz。 44

从imap中获取数据(使用PHP)。 对于每个提取的数据,该代码中的可变项是不同的,因此它尊重那里的所有数值

你能帮我把preg_match放在一起吗?

1 个答案:

答案 0 :(得分:0)

DOMDocument的一个例子:

$html = '<a href="http://www.allegro.pl/show_item.php?item=3069353216" target="_blank">Buty trekkingowe Chiruca Tasmania 12 GTX roz. 44</a>';
$dom = new DOMDocument();
@$dom->loadHTML($html);

$number = '3069353216';

$aNodes = $dom->getElementsByTagName('a');

foreach ($aNodes as $aNode) {
    if (preg_match('~=' . $number . '$~', $aNode->getAttribute('href')))
        echo $aNode->nodeValue;
}

如果要检查多个数字,并且$number是正则表达式模式的一部分,您可以写:

$number = '(?:3069353216|30804254251)';

或者您可以从数组中生成它:

$numbers = array('3069353216', '30804254251', ...);
$number = '(?:' . implode('|', $numbers) . ')';

如果您不需要特定号码:$number = '[0-9]+';

如果您不需要号码,可以删除if (preg_match...