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 ответ

Пример с 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...

licensed under cc by-sa 3.0 with attribution.