PHP中的正则表达式问题

PHP中的正则表达式问题,php,regex,Php,Regex,我想不出一个合适的头衔。我有一些数据,比如- $data = <<<EOD <strong> HHHHH <strong> TTTTT <strong> RRRRRRR <strong> EOD; $data=您可以使用前瞻性断言来确保存在,但它不是匹配的一部分(因此它可以是下一个匹配的一部分): (.*)(=) 然而,如果您得到的是HTML,那么您应该使用HTML解析器来读取它,而不是regex,因为它在解析HTML/XML

我想不出一个合适的头衔。我有一些数据,比如-

$data = <<<EOD
<strong>
HHHHH
<strong>
TTTTT
<strong>
RRRRRRR
<strong>
EOD;

$data=您可以使用前瞻性断言来确保
存在,但它不是匹配的一部分(因此它可以是下一个匹配的一部分):

(.*)(=

然而,如果您得到的是HTML,那么您应该使用HTML解析器来读取它,而不是regex,因为它在解析HTML/XML标记方面非常糟糕。使用
DOMDocument::loadHTML()
getElementsByName
等等,您将有一种更可靠的方式来抓取页面数据。

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

(.*)(=

然而,如果您得到的是HTML,那么您应该使用HTML解析器来读取它,而不是regex,因为它在解析HTML/XML标记方面非常糟糕。使用
DOMDocument::loadHTML()
getElementsByName
等工具,您将有一种更可靠的方式来抓取页面数据。

也许这只是一个输入错误,但您不应该编写以下内容:

preg_match_all("%</strong>(.*?)<strong>%s", $data, $all);
preg\u match\u all(“%(*?%s)”,$data,$all);

在您的第一个示例中,我看不出您正在关闭标签。。但是在“真实”的例子中你是。。也许就是这样

也许这只是一个打字错误,但你不应该这样写:

preg_match_all("%</strong>(.*?)<strong>%s", $data, $all);
preg\u match\u all(“%(*?%s)”,$data,$all);

在您的第一个示例中,我看不出您正在关闭标签。。但是在“真实”的例子中你是。。可能就是这样吧

如果那应该是HTML,那么在
元素中嵌套
元素的目的是什么?为什么没有结束标记?@Gordon-这只是一个例子。准确的数据格式正确。实际上它是这样的,一些标题数据一些其他标题另一个数据。你能提供与数据更相似的HTML(特别是其他数据和数据部分)吗?这样我们就可以看看正则表达式是否有意义,或者DOM解析器是否更合适。@Gordon-尽管我的问题已经解决了。你还可以看看这里。举例来说,数据是什么样子的?如果它应该是HTML,那么在
元素中嵌套
元素的目的是什么?为什么没有结束标记?@Gordon-这只是一个例子。准确的数据格式正确。实际上它是这样的,一些标题数据一些其他标题另一个数据。你能提供与数据更相似的HTML(特别是其他数据和数据部分)吗?这样我们就可以看看正则表达式是否有意义,或者DOM解析器是否更合适。@Gordon-尽管我的问题已经解决了。你还可以看看这里。更确切地说,数据看起来像是-@谢谢-它起作用了。我总是使用HTML解析器,但是对于这个任务,使用HTML解析器会造成一些时间浪费。@Thank-它可以工作。我总是使用HTML解析器,但是对于这个任务,使用HTML解析器会导致一些时间浪费。
</strong>(.*?)(?=<strong>)
preg_match_all("%</strong>(.*?)<strong>%s", $data, $all);