2014-02-20 1 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 "전과 후의 사물의 매칭에 문제가있는 것 같습니다.

링크는 제목을 포함하고 있습니다. rel 태그를 .html 뒤에 붙일 수 있습니다. 그래서 일반적인 링크 : <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. 나는 일하는 해결책이 이미 단지이 것을 impove하기 위해 정규 표현식을 필요로한다. – Stem

답변

1

이 시도

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

또는이 당신 completly 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> 
관련 문제