我有一个像这样的html(sample.html):
<html>
<head>
</head>
<body>
<div id="content">
<!--content-->
<p>some content</p>
<!--content-->
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我如何'<!--content-->'使用PHP 获取2 html评论之间的内容部分?我想得到它,做一些处理并把它放回去,所以我必须得到并放!可能吗?
jim*_*lan 15
esafwan - 您可以使用正则表达式来提取div(某个id)之间的内容.
我以前为图像标签做过这个,所以适用相同的规则.我会查看代码并稍微更新一下消息.
[更新]试试这个:
<?php
function get_tag( $attr, $value, $xml ) {
$attr = preg_quote($attr);
$value = preg_quote($value);
$tag_regex = '/<div[^>]*'.$attr.'="'.$value.'">(.*?)<\\/div>/si';
preg_match($tag_regex,
$xml,
$matches);
return $matches[1];
}
$yourentirehtml = file_get_contents("test.html");
$extract = get_tag('id', 'content', $yourentirehtml);
echo $extract;
?>
Run Code Online (Sandbox Code Playgroud)
或更简单地说:
preg_match("/<div[^>]*id=\"content\">(.*?)<\\/div>/si", $text, $match);
$content = $match[1];
Run Code Online (Sandbox Code Playgroud)
吉姆
如果这是一个不涉及解析实际HTML文档的简单替换,您可以使用正则表达式,甚至只是str_replace为此.但一般来说,使用Regex进行HTML是不明智的,因为HTML不是常规的,并且提出可靠的模式很快就会变成一场噩梦.
在PHP中解析HTML的正确方法是使用实际知道如何理解HTML文档的解析库.你最好的原生赌注是DOM,但PHP有许多其他你可以使用的原生XML扩展,还有一些第三方库,如phpQuery,Zend_Dom,QueryPath和FluentDom.
如果您使用搜索功能,您将看到此主题已被广泛涵盖,您应该没有问题找到显示如何解决您的问题的示例.