preg_replace - 如何删除标签内的内容?

发布于 2024-12-01 04:40:11 字数 293 浏览 0 评论 0原文

说我有这个。

$string = "<div class=\"name\">anyting</div>1234<div class=\"name\">anyting</div>abcd"; 
$regex = "#([<]div)(.*)([<]/div[>])#";
echo preg_replace($regex,'',$string);

输出是 abcd

但我想要 1234abcd

我该怎么做?

Say I have this.

$string = "<div class=\"name\">anyting</div>1234<div class=\"name\">anyting</div>abcd"; 
$regex = "#([<]div)(.*)([<]/div[>])#";
echo preg_replace($regex,'',$string);

The output is
abcd

But I want
1234abcd

How do I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

山田美奈子 2024-12-08 04:40:11

像这样:

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);

Like this:

preg_replace('/(<div[^>]*>)(.*?)(<\/div>)/i', '$1$3', $string);

If you want to remove the divs too:

preg_replace('/<div[^>]*>.*?<\/div>/i', '', $string);

To replace only the content in the divs with class name and not other classes:

preg_replace('/(<div.*?class="name"[^>]*>)(.*?)(<\/div>)/i', '$1$3', $string);
心凉 2024-12-08 04:40:11
$string = "<div class=\"name\">anything</div>1234<div class=\"name\">anything</div>abcd"; 
echo preg_replace('%<div.*?</div>%i', '', $string); // echo's 1234abcd

实例:

http://codepad.org/1XEC33sc

$string = "<div class=\"name\">anything</div>1234<div class=\"name\">anything</div>abcd"; 
echo preg_replace('%<div.*?</div>%i', '', $string); // echo's 1234abcd

Live example:

http://codepad.org/1XEC33sc

咆哮 2024-12-08 04:40:11

添加 ?,它将找到第一个出现的

preg_replace('~<div .*?>(.*?)</div>~','', $string); 

http://sandbox.phpcode。欧盟/g/c201b/3

add ?, it will find FIRST occurence

preg_replace('~<div .*?>(.*?)</div>~','', $string); 

http://sandbox.phpcode.eu/g/c201b/3

月下伊人醉 2024-12-08 04:40:11

这可能是一个简单的示例,但如果您有一个更复杂的示例,请使用 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 树,取决于您拥有的特定内容。

This might be a simple example, but if you have a more complex one, use an HTML/XML parser. For example with DOMDocument:

$doc = DOMDocument::loadHTML($string);
$xpath = new DOMXPath($doc);

$query = "//body/text()";
$nodes = $xpath->query($query);

$text = "";
foreach($nodes as $node) {
    $text .= $node->wholeText;
}    

Which query you have to use or whether you have to process the DOM tree in some other way, depends on the particular content you have.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文