php锚定标记正则表达式

php锚定标记正则表达式,php,regex,anchor,Php,Regex,Anchor,我有一组字符串,每个字符串包含一个锚标记和url 字符串ex here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy! href=部分中的URL并不总是与链接文本匹配(有时有缩短的URL,有时只是描述性文本) 我很难弄清楚如何使用正则表达式或php函数来实现这一点。如何从字符串解析整个锚定标记/链接 谢谢 您不应该使用html解析器 但是,如果您应该使用正则表达式,并

我有一组字符串,每个字符串包含一个锚标记和url

字符串ex

here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!
href=部分中的URL并不总是与链接文本匹配(有时有缩短的URL,有时只是描述性文本)

我很难弄清楚如何使用正则表达式或php函数来实现这一点。如何从字符串解析整个锚定标记/链接

谢谢

您不应该使用html解析器

但是,如果您应该使用正则表达式,并且您的锚定标记内部内容保证不包含html,如
,并且每个字符串保证只包含一个锚定标记(如示例中所示),那么-只有这样-您可以使用如下内容:

替换
/^(+)您不应该使用html解析器

但是,如果您应该使用正则表达式,并且您的锚定标记内部内容保证不包含html,如
,并且每个字符串保证只包含一个锚定标记(如示例中所示),那么-只有这样-您可以使用如下内容:


替换
/^(+)因为您的问题似乎非常具体,我认为应该这样做:

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

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

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

只需使用普通的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字符串函数

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

看看您的结果示例,您似乎只是删除了标记/内容-您是否希望保留您删除的内容?如果不是,您可能正在寻找。

查看您的结果示例,您似乎只是在删除标记/内容-您想保留您删除的内容吗?如果没有,您可能正在查找。

$string='这里有一个链接。享受吧;
$text=strip_标记($string);
echo$文本//输出“这是一个链接,请欣赏!”
$string='这里有一个链接。享受吧;
$text=strip_标记($string);
echo$文本//输出“这是一个链接,请欣赏!”
$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!"