Как использовать preg match, чтобы получить содержимое этого HTML-тега? - PullRequest
0 голосов
/ 02 марта 2012

Я пытаюсь получить желаемый контент в этом теге:

<p class="address">
desired content
</p>

это моя попытка:

preg_match_all("/\<p class=\"address\">(.*)\<\/p\>/", $contents, $matches);

Но массив $ match пуст. Пожалуйста, помогите.

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 марта 2012
  1. вам нужно установить флаг PCRE_DOTALL, чтобы . также совпадал с \n - см. модификаторы
  2. используйте .*? (разборчивый оператор), чтобы не препятствовать сопоставлению </p> в группе захвата
  3. Вы можете использовать другой разделитель шаблонов и одинарные кавычки для удаления всех обратных косых черт, что делает ваш шаблон намного более читабельным!

вроде так:

<?php
$contents = '<p class="address">
desired content
</p>';
$res = preg_match_all('#<p class="address">(.*?)</p>#s', $contents, $matches);
var_dump($matches);
0 голосов
/ 02 марта 2012

Вы можете попробовать это:

$contents = '<p class="address">desired content</p>';
$res = preg_match_all("/\<p class=\"address\">(.*)\<\/p\>/s", $contents, $matches);
var_dump($res);
var_dump($matches);

$ совпадений не пусто, верно?

...