2010-06-20 7 views
0

이 기능은 작동하지 않습니다PHP는 preg_replace이다

function remove_ul($ul) { 
    $ul = preg_replace('/<ul id="general-nav">/', '<ul class="nav">', $ul, 1); 
    $ul = preg_replace('/</ul>/', '<li class="blank"></li></ul>', $ul, 1); 
    return $ul; 
} 

나는 때문에 </ul>

어떤 생각과 일치에 /을 반복 생각?

감사합니다. 이 교체

+0

[delimiters] (http://www.php.net/manual/en/regexp.reference.delimiters.php)에 대해 읽어보십시오. –

+0

링크를 가져 주셔서 감사합니다. – Happy

답변

4

시도 :

$ul = preg_replace('/</ul>/', '<li class="blank"></li></ul>', $ul, 1); 

과 :

$ul = preg_replace('/<\/ul>/', '<li class="blank"></li></ul>', $ul, 1); 

또는 시도 :

코드에서, 당신은 </ul>를 사용하여 구분 / 다음을 지정했기 때문에
$ul = preg_replace('#</ul>#', '<li class="blank"></li></ul>', $ul, 1); 

, 충돌이있을 때 구분 기호를 이스케이프해야합니다. \ 또는 #을 구분 기호로 사용하십시오.

1

두 번째 식 (/<\/ul>/)에서 슬래시를 이스케이프 처리하십시오. 쿼리가 더 복잡해지면 캡처 링 그룹 (괄호)을 사용해야 할 수도 있습니다.

오, 정규식으로 html을 구문 분석하는 것은 악합니다. 전에 XHTML 정규식 악 대차는이 포스트를 폭풍우 치게한다. :)