Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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 匹配相同字符的第一个字符_Php_Html_Regex - Fatal编程技术网

Php 匹配相同字符的第一个字符

Php 匹配相同字符的第一个字符,php,html,regex,Php,Html,Regex,我如何使用这个: <div class="content"><div>Content</div></div> 内容 与此匹配: <div>Content</div> 内容 我使用了这个正则表达式,但它不起作用,因为它匹配最后一个div /<div\s?(.*)>(.*)<\/div>/ /(*)/ 正如@Quill所说,正则表达式可能不是您的最佳选择,但是如果您以某种方式解析HTML字符串,

我如何使用这个:

<div class="content"><div>Content</div></div>
内容
与此匹配:

<div>Content</div>
内容
我使用了这个正则表达式,但它不起作用,因为它匹配最后一个div

/<div\s?(.*)>(.*)<\/div>/
/(*)/

正如@Quill所说,正则表达式可能不是您的最佳选择,但是如果您以某种方式解析HTML字符串,您可以通过编辑
(.*)
来选择下一个尖括号(仅该div)的所有内容,更改正则表达式,使其与第一个结束符相匹配:


/]*)>([^在这种情况下使用正则表达式进行HTML解析是不合适的,因为您处理的是递归结构。请使用
DOMDocument

$html = '<div class="content"><div>Content</div></div>';

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$xpath = new DOMXPath($dom);
$divs = $xpath->query('//div[@class="content"]'); // Get all DIV tags with "class" attribute with "content" as its value

foreach($divs as $div) { 

   foreach ($div->childNodes as $childNode) {
       echo $dom->saveHTML($childNode);
   }
}
$html='Content';
$dom=新的DOMDocument('1.0','UTF-8');
$dom->loadHTML($html,LIBXML\u html\u noimpled | LIBXML\u html\u NODEFDTD);
$xpath=newdomxpath($dom);
$divs=$xpath->query('//div[@class=“content”]);//获取所有具有“class”属性且值为“content”的div标记
foreach($div作为$div){
foreach($div->childNodes作为$childNode){
echo$dom->saveHTML($childNode);
}
}

结果:
Content


如果您的输入包含无效的HTML,您将需要一些调整,但我想情况并非如此。

取决于您正在做什么,您不需要正则表达式,并且在同一条注释上,您不应该使用正则表达式解析HTML:请阅读关于此的更多信息。
$html = '<div class="content"><div>Content</div></div>';

$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);

$xpath = new DOMXPath($dom);
$divs = $xpath->query('//div[@class="content"]'); // Get all DIV tags with "class" attribute with "content" as its value

foreach($divs as $div) { 

   foreach ($div->childNodes as $childNode) {
       echo $dom->saveHTML($childNode);
   }
}