如何在静态HTML代码(PHP)中使用正则表达式

如何在静态HTML代码(PHP)中使用正则表达式,php,regex,Php,Regex,我对常用的表达方式还不熟悉,只是还没有掌握它的窍门 我使用CURL和PHP从给定的网页抓取了html内容。此网页从不改变其结构。页面上的结果取决于搜索功能,但html标记始终相同。我需要根据输入的搜索词从页面中获取结果数据 我需要的数据是: (555)555-5555是固定电话 所以我需要抓住中间的任何东西 和 如果我有$data,这是生成的HTML,我如何将其放入正则表达式中,并将找到的数据作为$result进行回显?使用正则表达式无法可靠地从HTML提取信息。但是,您可以使用HTML解析器,

我对常用的表达方式还不熟悉,只是还没有掌握它的窍门

我使用CURL和PHP从给定的网页抓取了html内容。此网页从不改变其结构。页面上的结果取决于搜索功能,但html标记始终相同。我需要根据输入的搜索词从页面中获取结果数据

我需要的数据是:

(555)555-5555是固定电话

所以我需要抓住中间的任何东西


如果我有
$data
,这是生成的HTML,我如何将其放入正则表达式中,并将找到的数据作为
$result
进行回显?

使用正则表达式无法可靠地从HTML提取信息。但是,您可以使用HTML解析器,如。这将从字符串中提取HTML,然后您可以使用或之类的函数来查找值。还有其他HTML解析器。

使用正则表达式无法可靠地从HTML中提取信息。但是,您可以使用HTML解析器,如。这将从字符串中提取HTML,然后您可以使用或之类的函数来查找值。还有其他HTML解析器。

请使用HTML解析器,例如。您的问题可能看起来是局部性的,但事实并非如此。即使是这样,这种类型的问题在以后的某一天会扩大范围,这将使您非常头疼,即使您可以让它与正则表达式一起工作。


请使用HTML解析器,例如。您的问题可能看起来是局部性的,但事实并非如此。即使是这样,这种类型的问题在以后的某一天会在范围内扩大,这将给您带来巨大的麻烦,即使您可以让它使用正则表达式。

这两个答案都告诉您不要使用正则表达式,而是使用DOM解析器是正确的,但是,如果页面的结构没有改变,快速脏正则表达式可以很好地完成这一任务,因为您有绝对正确的起点和终点作为参考。

两个答案都告诉您不要使用正则表达式,而是使用DOM解析器是正确的,但是,如果页面的结构没有改变,快速脏正则表达式就可以很好地完成这一任务,考虑到您已将起始点和结束点完全放置好以供参考。

您可以使用此搜索模式在标记之间选择文本:

<span id="result1">(.*?)</span>
(*)
如果您的代码是:
(555)555-5555是固定电话,则捕获组返回“(555)555-5555是固定电话

有关如何回显结果的更多信息,请参阅


还可以像其他人建议的那样研究HTMLDOM解析器。也许我根本不应该回答…

您可以使用此搜索模式在标签之间选择文本:

<span id="result1">(.*?)</span>
(*)
如果您的代码是:
(555)555-5555是固定电话,则捕获组返回“(555)555-5555是固定电话

有关如何回显结果的更多信息,请参阅


还可以像其他人建议的那样研究HTMLDOM解析器。也许我根本就不该回答…

你已经被警告不要用正则表达式解析HTML了。下面是一个基于DOM解析器的代码,用于提取您的值:

$html = <<< EOF
<html>
<head>
<title>Some Title</title>
</head>
<body>
<H1 class="location_only">(555) 555-5555 is a Landline</H1>
</body>
</html>
EOF;
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);
$value = $xpath->evaluate("string(//h1[@class='location_only']/text())"); 
echo "Your H1 Value=[$value]\n"; // prints text between <h1> and </h1>

您已经受到足够的警告,不要使用正则表达式解析HTML。下面是一个基于DOM解析器的代码,用于提取您的值:

$html = <<< EOF
<html>
<head>
<title>Some Title</title>
</head>
<body>
<H1 class="location_only">(555) 555-5555 is a Landline</H1>
</body>
</html>
EOF;
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);
$value = $xpath->evaluate("string(//h1[@class='location_only']/text())"); 
echo "Your H1 Value=[$value]\n"; // prints text between <h1> and </h1>

您能提供一个您试图从中提取的html代码的示例或片段吗?回答了数百万次,其中。。。将html解析为xml并从中获取它。。。不要使用RegExposible复制它为什么删除我的代码?我在原始问题???@user1351759中举了一个例子:代码有一种特殊的语法。很快就会出现编辑。你能提供一个你试图从中提取的html代码的示例或片段吗?回答了数百万次,其中。。。将html解析为xml并从中获取它。。。不要使用RegExposible复制它为什么删除我的代码?我在原始问题???@user1351759中举了一个例子:代码有一种特殊的语法。我有一个简单的HTMLDOM解析器,但我真的不知道如何在这个应用程序中使用它。如果我做了,我会的。你能告诉我关于这个的教程吗?或者我应该开始一个新的问题吗?我有一个简单的HTML DOM解析器,但我真的不知道如何在这个应用程序中使用它。如果我做了,我会的。你能告诉我这方面的教程吗?还是我应该开始一个新问题?