Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:Regular expression/preg_match()直到EOL_Php_Regex_Html Parsing_Preg Match - Fatal编程技术网

PHP:Regular expression/preg_match()直到EOL

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); 说明 此正则表达式将找到状态:,并将从到行尾的所有内容返

HTML页面中有这样一行:

<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的示例,请参见。