PHP:Regular expression/preg_match()直到EOL
HTML页面中有这样一行:PHP:Regular expression/preg_match()直到EOL,php,regex,html-parsing,preg-match,Php,Regex,Html Parsing,Preg Match,HTML页面中有这样一行: <p><strong>State:</strong> <a href="/state/show/Ohio">Ohio</a></p> 状态: 我要找的是一个正则表达式,它获取介于状态:和EOL之间的内容 我尝试过这个方法,但它不起作用,因为它忽略了-“end” preg_match('/状态:(.*)/',$html,$format); 说明 此正则表达式将找到状态:,并将从到行尾的所有内容返
<p><strong>State:</strong> <a href="/state/show/Ohio">Ohio</a></p>
状态:
我要找的是一个正则表达式,它获取介于状态:
和EOL之间的内容
我尝试过这个方法,但它不起作用,因为它忽略了-“end”
preg_match('/状态:(.*)/',$html,$format);
说明
此正则表达式将找到状态:
,并将从
到行尾的所有内容返回到组1中。注意:通过包含$
符号,您还需要包含m
选项,以强制正则表达式允许$
匹配行尾
使用示例文本:说明:
正则表达式:状态:(*?$)
第1组将有
如果您确实想直接在强标记组之后捕获锚标记,而不包括close
,请尝试以下操作:
正则表达式:状态:\s*(.*)$
第1组将有
免责声明
从长远来看,用正则表达式解析HTML可能不是最容易维护的事情。但是,如果您可以控制输入文本,那么文本仍然非常简单,并且您愿意使用定期边缘情况,在这种情况下,常规表达式可能会失败,那么regex将适合您
PHP Html解析
够了肥皂盒。如果您已经准备好在PHP中研究html解析,那么请看一看这个示例,其中拉取页面上的所有锚定标记并返回它们的href属性和链接文本:
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents('http://www.YourPageHere.com/'));
// echo Links and their anchor text
echo '<pre>';
echo "Link\tAnchor\n";
foreach($dom->getElementsByTagName('a') as $link) {
$href = $link->getAttribute('href');
$anchor = $link->nodeValue;
echo $href,"\t",$anchor,"\n";
}
echo '</pre>';
$dom=新的DOMDocument;
$dom->loadHTML(文件获取内容('http://www.YourPageHere.com/'));
//回显链接及其锚文本
回声';
echo“Link\tAnchor\n”;
foreach($dom->getElementsByTagName('a')作为$link){
$href=$link->getAttribute('href');
$anchor=$link->nodeValue;
echo$href,“\t”,$anchor,“\n”;
}
回声';
说明
此正则表达式将找到状态:
,并将从
到行尾的所有内容返回到组1中。注意:通过包含$
符号,您还需要包含m
选项,以强制正则表达式允许$
匹配行尾
使用示例文本:说明:
正则表达式:状态:(*?$)
第1组将有
如果您确实想直接在强标记组之后捕获锚标记,而不包括close
,请尝试以下操作:
正则表达式:状态:\s*(.*)$
第1组将有
免责声明
从长远来看,用正则表达式解析HTML可能不是最容易维护的事情。但是,如果您可以控制输入文本,那么文本仍然非常简单,并且您愿意使用定期边缘情况,在这种情况下,常规表达式可能会失败,那么regex将适合您
PHP Html解析
够了肥皂盒。如果您已经准备好在PHP中研究html解析,那么请看一看这个示例,其中拉取页面上的所有锚定标记并返回它们的href属性和链接文本:
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents('http://www.YourPageHere.com/'));
// echo Links and their anchor text
echo '<pre>';
echo "Link\tAnchor\n";
foreach($dom->getElementsByTagName('a') as $link) {
$href = $link->getAttribute('href');
$anchor = $link->nodeValue;
echo $href,"\t",$anchor,"\n";
}
echo '</pre>';
$dom=新的DOMDocument;
$dom->loadHTML(文件获取内容('http://www.YourPageHere.com/'));
//回显链接及其锚文本
回声';
echo“Link\tAnchor\n”;
foreach($dom->getElementsByTagName('a')作为$link){
$href=$link->getAttribute('href');
$anchor=$link->nodeValue;
echo$href,“\t”,$anchor,“\n”;
}
回声';
您能用您对该案例期望的确切结果更新您的帖子吗?是否希望状态:?如果是的话。。。只要将(.*)替换为。*就可以了。如果要匹配到行尾,可以使用状态:(.*)
任何不考虑html解析器的原因。不要使用正则表达式来解析html。您无法用正则表达式可靠地解析HTML,在这条路上您将面临悲伤和挫折。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用已经编写、测试和调试过的PHP模块正确解析HTML的示例,请参阅。您能用这种情况下期望的确切输出更新您的帖子吗?是否希望状态:?如果是的话。。。只要将(.*)替换为。*就可以了。如果要匹配到行尾,可以使用状态:(.*)
任何不考虑html解析器的原因。不要使用正则表达式来解析html。您无法用正则表达式可靠地解析HTML,在这条路上您将面临悲伤和挫折。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用已编写、测试和调试的PHP模块正确解析HTML的示例,请参见。