Php 从定位标记提取链接文本的正则表达式

Php 从定位标记提取链接文本的正则表达式,php,regex,Php,Regex,我想把细辛这个词放在下面一行: <A HREF="http://www.getty.edu/vow/TGNFullDisplay?find=&place=&nation=&english=Y&subjectid=1062783">Asarum</A> 我试过: preg_replace('/<a.*?>/i', '', $link); preg_replace('/<\/a>/i', '', $link);

我想把细辛这个词放在下面一行:

 <A HREF="http://www.getty.edu/vow/TGNFullDisplay?find=&place=&nation=&english=Y&subjectid=1062783">Asarum</A>

我试过:

preg_replace('/<a.*?>/i', '', $link);
preg_replace('/<\/a>/i', '', $link);
echo $link;
preg_replace('//i',''$link);
preg_replace('//i','$link);
echo$link;
但它不起作用。什么也没有删掉


有人能帮我吗?

您需要分配结果:

$link = preg_replace('/<a.*?>/i', '', $link);
$link = preg_replace('/<\/a>/i', '', $link);
echo $link;
$link=preg_replace('//i',''$link);
$link=preg_replace('//i',''$link);
echo$link;

使用此代码将文本与特定正则表达式匹配,而不是替换其他所有内容:

preg_match('/<a.*?>(.+?)<\/a>/i', $link, $matches);
preg_match('/(.+?)/i',$link,$matches);
$matches[1]
现在将包含您要查找的文本。

最快(可能-未测试):

最清楚的:

$t = strip_tags($link);
带正则表达式的基本条带标记:

$t = preg_replace('/<[^>]*>/', '', $link);
$t=preg_replace('/]*>/',''.$link);

奇怪。我以前从来没有这样做过,而且似乎很有效……也许我错了。简短、简单、可靠+1我应该注意,这仅在给定的字符串仅包含单个HTML元素时有效。如果您试图从更大的HTML片段中选择锚元素,您可能需要DouweM的解决方案。您确定吗?我只想得到标签中的文本,而不是我从你的代码中得到的整个元素。我的代码应该只给出
标签中的文本。。。您是否尝试过
打印($matches)
以查看其中的确切内容?+1因为您的解决方案确实有效,但使用给定的输入,您可以不受
“/>([^
$t = preg_replace('/<[^>]*>/', '', $link);