2014-02-20 56 views
0

我有替換,我想改善從菜單中刪除鏈接。PHP的正則表達式:使鏈接不能在菜單中單擊。刪除鏈接,但保持錨點

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

此代碼有效,但我想添加從菜單中刪除其他類型的鏈接。所有與類=「選擇」我嘗試寫正則表達式,它將從頁面中刪除鏈接,但保持錨定。 所以我有正則表達式<a class="selected" href="'.$page.'.html"([^>]+)>([^<]+)<\/a>哪些不起作用。看起來像.html「和之前的內容匹配的問題。」

鏈接包含標題,並且可以在.html之後解除rel標籤。「所以典型的鏈接:<a class="selected" href="connect.html" title="Email" rel="nofollow">Email</a> 希望你比我更好的PHP正則表達式。

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

將輸出:

+1

爲什麼不能http://uk3.php.net/domdocument和http://uk3.php.net/domxpath? – CD001

+0

嘿,cd001。我有工作的解決方案已經只需要正則表達式來推動這件事情。 – Stem

回答

1

,如果你想只刪除鏈接本身試試這個

<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> 
相關問題