PHP正则表达式:使菜单中的链接不可点击。删除链接但保留锚点

时间:2014-02-20 13:01:06

标签: php regex replace hyperlink anchor

我有替换,我想改进从菜单中删除链接。

   $n=extract(
  preg_replace(
     array(
        '/<li><a class="selected" href="post_'.$page.'.html">(.+)<\/a><\/li>/i',
        '/<li class="nolink">(.+)<\/li>/i',
     ),
     array(
        '',
        '<li class="nolink">\\1</li>',
     ),
     compact('topmenu','menu','add','counters')
  ),

EXTR_OVERWRITE);

此代码有效,但我想添加从菜单中删除其他类型的链接。全部使用class =“selected”我尝试编写正则表达式,它将从页面中删除链接但保留锚点。 所以我有正则表达式<a class="selected" href="'.$page.'.html"([^>]+)>([^<]+)<\/a>这是行不通的。看起来像.html“和之前&gt;。

之后匹配事物的问题

链接包含标题,可以在.html之后删除rel标记“。所以典型的链接:<a class="selected" href="connect.html" title="Email" rel="nofollow">Email</a> 希望你使用php regex比我好。

1 个答案:

答案 0 :(得分:1)

如果您只想删除链接本身,请尝试此操作:

$link = '<a class="selected" href="connect.html" title="Email" rel="nofollow">Email</a>';
echo preg_replace('/(:?href=\")(.+?)(:?\")/', '$1$3', $link);

将输出:

<a class="selected" href="" title="Email" rel="nofollow">Email</a>

或者如果你想完全删除href标签:

$link = '<a class="selected" href="connect.html" title="Email" rel="nofollow">Email</a>';
echo preg_replace('/(href=\".+?\")/', '', $link);

将输出:

<a class="selected"  title="Email" rel="nofollow">Email</a>