Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 包含HTML标记之间新行的可能性的正则表达式_Php_Regex - Fatal编程技术网

Php 包含HTML标记之间新行的可能性的正则表达式

Php 包含HTML标记之间新行的可能性的正则表达式,php,regex,Php,Regex,我有这样的模式: /(\根据注释,“永远不要用正则表达式解析HTML” 改用解析器:它不太难,而且给了您很多可能性 使用DOMDocument和DOMXPath查看这些HTML示例: $dom = new DOMDocument(); libxml_use_internal_errors(1); $dom->loadHTML( $html ); $xpath = new DOMXPath( $dom ); 首先,initDOMDocument,加载HTML和initDOMXPath: $

我有这样的模式:
/(\根据注释,“永远不要用正则表达式解析HTML”

改用解析器:它不太难,而且给了您很多可能性

使用
DOMDocument
DOMXPath
查看这些HTML示例:

$dom = new DOMDocument();
libxml_use_internal_errors(1);
$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );
首先,init
DOMDocument
,加载HTML和init
DOMXPath

$dom = new DOMDocument();
libxml_use_internal_errors(1);
$dom->loadHTML( $html );
$xpath = new DOMXPath( $dom );
要检索所有
src
属性:

$iframes = $dom->getElementsByTagName( 'iframe' );
foreach( $iframes as $iframe )
{
    echo $iframe->getAttribute( 'src' ) . PHP_EOL;
}
要从
itemprop
属性
duration
中检索“1818”:

$duration = $xpath->query( '//span[@itemprop="duration"]/@content' );
echo $duration->item(0)->nodeValue . PHP_EOL;
上述xPath模式意味着:

//选择以下模式,无论它们在文档中的什么位置
带标记的span='span'
[@itemprop=“duration”]属性为“itemprop”=“duration”
/@内容(获取)属性“内容”

  • 阅读更多关于
  • 阅读更多关于
  • 阅读更多关于

永远不要用正则表达式解析HTML。请改用“它在PHP上失败”-你是怎么定义的?我刚刚测试了你的正则表达式,它可以工作well@RomanPerekhrest返回false。不匹配。将当前的php代码添加到问题中,让我们看看尝试添加
/ms
修饰符以启用多行并允许
匹配换行符。我将对此进行尝试并报告。