如何使用preg match获取此html标记的内容?

时间:2012-03-02 09:37:34

标签: php preg-match

我正在尝试获取此标记中的所需内容:

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

这是我的尝试:

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

但是$ matches数组是空的。请帮忙。

由于

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

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

$匹配不是空的,对吧?

答案 1 :(得分:0)

  1. 您需要设置PCRE_DOTALL标志,使.也匹配\n - 请参阅modifiers
  2. 使用.*?(ungreedy运算符)不阻止匹配</p>在捕获组中
  3. 您可以使用不同的模式分隔符和单引号来删除所有反斜杠,使您的模式更具可读性!
  4. 像这样:

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