使用PHP preg_match获取两个其他字符串之间的字符串

时间:2014-03-22 21:33:07

标签: php regex preg-match

我的变量$Contents包含网页的内容,我需要提取以下内容:

开始:<div class="XXXXX">

结束:<div role="XXXXX"'

YYYYY表示的字符串可以是数字,字符,空格,引号以及现代键盘上存在的任何内容。

目前我正在使用它:

preg_match("/<div class=\"XXXXX\">(.*)<div role=\"XXXXX\"/", $Contents, $match);
echo "<p>Event Title: $match[1]</p>";

但是什么都没有,所以我认为这是我的正则表达式的问题。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我假设第二个XXXXX应该是YYYYY,或者你只是说它可能是任何字符串。

首先,你真的应该使用解析器而不是正则表达式。请参阅this classic, sad tale了解原因。

其次,要回答您的问题:在?之后添加.*并在最后一个斜杠之后使用s来匹配不同的行,例如:

$Contents = '<div class="XXXXX">
    foo bar
    <div role="alacadabra">baz';
preg_match("/<div class=\"XXXXX\">(.*)<div role=\".+\"/s", $Contents, $match);
echo "<p>Event Title: $match[1]</p>"; // outputs foo bar