说我有这个。
$string = "<div class=\"name\">anyting</div>1234<div class=\"name\">anyting</div>abcd";
$regex = "#([<]div)(.*)([<]/div[>])#";
echo preg_replace($regex,'',$string);
输出是 ABCD
但我想要 1234ABCD
我该怎么做?
答案 0 :(得分:9)
像这样:
preg_replace('/(<div[^>]*>)(.*?)(<\/div>)/i', '$1$3', $string);
如果你想删除div:
preg_replace('/<div[^>]*>.*?<\/div>/i', '', $string);
要仅使用类名而不是其他类替换div中的内容:
preg_replace('/(<div.*?class="name"[^>]*>)(.*?)(<\/div>)/i', '$1$3', $string);
答案 1 :(得分:3)
$string = "<div class=\"name\">anything</div>1234<div class=\"name\">anything</div>abcd";
echo preg_replace('%<div.*?</div>%i', '', $string); // echo's 1234abcd
实例:
答案 2 :(得分:0)
添加?
,它会找到第一次出现
preg_replace('~<div .*?>(.*?)</div>~','', $string);
答案 3 :(得分:0)
这可能是一个简单的示例,但如果您有一个更复杂的示例,请使用HTML / XML解析器。例如DOMDocument
:
$doc = DOMDocument::loadHTML($string);
$xpath = new DOMXPath($doc);
$query = "//body/text()";
$nodes = $xpath->query($query);
$text = "";
foreach($nodes as $node) {
$text .= $node->wholeText;
}
您必须使用哪个查询或是否必须以其他方式处理DOM树,具体取决于您拥有的特定内容。