PHP中的RegEx问题

Shu*_*ham 1 php regex

我想不出一个合适的头衔.我有一些数据像 -

$data = <<<EOD
<strong>
HHHHH
<strong>
TTTTT
<strong>
RRRRRRR
<strong>
EOD;
Run Code Online (Sandbox Code Playgroud)

基本上只有一个例子.实际上,数据就像 -

<strong>Some Title</strong>
DATA
<strong>Some other Title</strong>
OTHER DATA
Run Code Online (Sandbox Code Playgroud)

示例:http://pastebin.com/cxzZWDZ8

现在我应用以下RegEx.

preg_match_all("%<strong>(.*?)<strong>%s", $data, $all);
Run Code Online (Sandbox Code Playgroud)

这符合,HHHHH并且RRRRRRR但是我想匹配TTTTT.我怎样才能做到这一点?

bob*_*nce 5

您可以使用前瞻断言来确保它<strong>在那里,但不是匹配的一部分(因此它可以是下一个匹配的一部分):

</strong>(.*?)(?=<strong>)
Run Code Online (Sandbox Code Playgroud)

但是,如果你得到的是HTML,你应该使用HTML解析器来读取它而不是正则表达式,这在解析HTML/XML标记方面很差.有了DOMDocument::loadHTML(),getElementsByName等等,你将有一个更可靠的方法来抓取页面数据.