<a>标签替换的正则表达式

Ang*_*cio 0 html php regex preg-replace

我是正则表达式的新手,但我正在努力学习它.我想删除html文本的标记,只允许内部文本.像这样的东西:

Original: Lorem ipsum <a href="http://www.google.es">Google</a> Lorem ipsum <a href="http://www.bing.com">Bing</a>
Result:  Lorem ipsum Google Lorem ipsum Bing
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码:

$patterns = array( "/(<a href=\"[a-z0-9.:_\-\/]{1,}\">)/i", "/<\/a>/i");
$replacements = array("", "");

$text = 'Lorem ipsum <a href="http://www.google.es">Google</a> Lorem ipsum <a href="http://www.bing.com">Bing</a>';
$text = preg_replace($patterns,$replacements,$text);
Run Code Online (Sandbox Code Playgroud)

它有效,但我不知道这个代码是更高效还是更易读.

我可以用某种方式改进代码吗?

Pek*_*ica 7

在您的情况下,PHP strip_tags()应该完全按照您的需要进行,而无需使用正则表达式.如果您只想删除特定标记(strip_tags()默认情况下无法执行此操作),则" 用户贡献的注释"中有一个功能.

通常,正则表达式不适合解析HTML.最好使用简单HTML DOM之类的DOM解析器或PHP的内置解析器之一.


You*_*You 5

不要使用正则表达式,而是使用DOM解析器.

  • 应阅读*不要使用正则表达式***来解析(x)HTML**.这不像是完全无用的;) (3认同)