匹配HTML类标记之间的文本

时间:2012-06-16 01:53:02

标签: php regex html-parsing preg-match-all

我收到了以下HTML代码:

<ul class='ips'>my_content</ul>

现在,我如何preg_match_all这个,只匹配my_content文字?

我正在尝试这个问题的答案:Preg match text in php between html tags但修改正则表达式会导致选择包含HTML标记的整个代码。

2 个答案:

答案 0 :(得分:1)

以下正则表达式适用于标记之间的匹配。

它将匹配:

<ul class='ips'>... 

使用单引号和双引号。

$string = "<ul class='ips'>my_content</ul>";
preg_match_all('/[^>]class=["\']ips[\'"]*>(.*?)<\//',
           $string,
           $matches,
           PREG_PATTERN_ORDER);
print_r($matches);

如果您不在乎div,ul等,请从正则表达式模式中删除<ulul>

上述回复:

Array
(
[0] => Array
    (
        [0] => <ul class="ips">my_content</ul>
    )

[1] => Array
    (
        [0] => my_content
    )

)

答案 1 :(得分:0)

在此处,使用此RegEx允许变体:

/[^>]class\s*=\s*["\'].*ips.*[\'"].*>/
  • 等号前后的空格
  • 一个类属性中的多个类名
  • 类属性
  • 后的多个属性