如何删除PHP中的标签之间的文本?

MrF*_*dge 18 php regex string

尽管使用PHP多年,我从来没有真正学会如何使用表达式正确地截断字符串...现在正在咬我的背面!

任何人都可以给我一些帮助截断这个吗?我需要从网址中删除文本部分,然后转动

<a href="link.html">text</a>
Run Code Online (Sandbox Code Playgroud)

<a href="link.html"></a>
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 30

$str = preg_replace('#(<a.*?>).*?(</a>)#', '$1$2', $str)
Run Code Online (Sandbox Code Playgroud)


kar*_*m79 13

使用SimpleHTMLDom:

<?php
// example of how to modify anchor innerText
include('simple_html_dom.php');

// get DOM from URL or file
$html = file_get_html('http://www.example.com/');

//set innerText to null for each anchor
foreach($html->find('a') as $e) {
    $e->innerText = null;
}

// dump contents
echo $html;
?>
Run Code Online (Sandbox Code Playgroud)

  • 没有冒犯,但这个答案是8岁,没有人真正注意到这个答案是不正确的,不起作用.简单地回显`$ html`时,foreach循环无效.无法相信这得到了如此多的投票,没有人真正测试过它. (5认同)

Pas*_*TIN 7

这样的事情怎么样,考虑到你可能想和其他人一起重复使用它href:

$str = '<a href="link.html">text</a>';
$result = preg_replace('#(<a[^>]*>).*?(</a>)#', '$1$2', $str);
var_dump($result);
Run Code Online (Sandbox Code Playgroud)

哪个会给你:

string '<a href="link.html"></a>' (length=24)
Run Code Online (Sandbox Code Playgroud)

(我在考虑你在OP中打错了?)


如果您不需要匹配任何其他href,您可以使用以下内容:

$str = '<a href="link.html">text</a>';
$result = preg_replace('#(<a href="link.html">).*?(</a>)#', '$1$2', $str);
var_dump($result);
Run Code Online (Sandbox Code Playgroud)

哪个也能帮到你:

string '<a href="link.html"></a>' (length=24)
Run Code Online (Sandbox Code Playgroud)


作为旁注:对于更复杂的HTML,不要尝试使用正则表达式:它们适用于这种简单的情况,但对于真实的HTML部分,它们通常没有帮助,一般来说:HTML不是完全"正常""足够"被正则表达式解析.