php锚标签正则表达式

时间:2009-11-28 09:20:50

标签: php regex anchor

我有一堆字符串,每个字符串都包含一个锚标记和网址。

string ex。

here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!

我想解析锚标签以及介于两者之间的所有内容。

结果ex。

here is a link. enjoy!

href =部分中的网址并不总是与链接文本匹配(有时会缩短网址,有时只是描述性文字)。

我很难找到如何使用正则表达式或php函数执行此操作。如何从字符串中解析整个锚标记/链接?

谢谢!

5 个答案:

答案 0 :(得分:1)

看看你的结果示例,看起来你只是删除了标签/内容 - 你想要保留你删除的内容吗?如果不是,您可能正在寻找strip_tags()

答案 1 :(得分:0)

您不应该使用regex to parse html而是使用html解析器。

但是如果您应该使用正则表达式,并且您的锚标记内部内容保证不含</a>之类的html,并且每个字符串保证只包含一个锚标记,如示例中所示,那么 - 仅那么 - 你可以使用类似的东西:

/^(.+)<a.+<\/a>(.+)$/

替换$1$2

答案 2 :(得分:0)

由于您的问题似乎非常具体,我认为应该这样做:

$str = preg_replace('#\s?<a.*/a>#', '', $str);

答案 3 :(得分:0)

只使用普通的PHP字符串函数。

$str='here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!';
$s = explode("</a>",$str);
foreach($s as $a=>$b){
    if( strpos( $b ,"href")!==FALSE ){
        $m=strpos("$b","<a");
        echo substr($b,0,$m);
    }
}   
print end($s);

输出

$ php test.php
here is a link . enjoy!

答案 4 :(得分:0)

$string = 'here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!';
$text = strip_tags($string);
echo $text; //Outputs "here is a link . enjoy!"