2010-04-24 3 views
0

내 스크립트에서 다음 유형의 표현식을 삭제하고 싶습니다.php : 정규식을 통해 단어 삭제

<a any text here>nothing or space here</a> 

나는 3 가지 기능으로 할 수 있지만 길이가 짧다고 생각합니다. 나를 도울 수 있습니까? http://www.regular-expressions.info/php.html에서 촬영 미리

+0

그냥 (!) 참고로, 당신은 HTML을 청소하기 위해 찾고 있다면, 당신은 HTML 파서 더 낫다. 이 유명한 대답 (/ question)을 참조하십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – pinkgothic

답변

2

preg_replace('/<a(.*?)>\s*<\/a>/', '', $str)이 작동합니까?

편집 : Alan Moore가 맞습니다.

+0

preg_replace ('/ . * <\/a>/',' ', $ str)이됩니다. http://rubular.com/r/uFatSqs2Vj – Gazler

+1

"여기에 아무것도 없거나 공백이 없다"는 것을 제외하고는'\ s *'는'\ s *'를 의미하고'\ s +'는 의미하지 않습니다. –

0

에서 감사 :

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])는 대체 문자열로 대체 대상 문자열에서 정규식 패턴의 모든 일치 문자열을 반환합니다.

최대 한도로 대체됩니다. 한 가지 중요한 차이점은 제한을 제외한 모든 매개 변수가 문자열 대신 배열이 될 수 있다는 것입니다.

이 경우 preg_replace은 여러 번 작업을 수행하여 배열의 요소를 동시에 반복합니다. 일부 매개 변수에는 문자열을 사용하고 다른 매개 변수에는 배열을 사용할 수도 있습니다. 그런 다음 함수는 배열을 반복하고 각 반복마다 동일한 문자열을 사용합니다. 패턴 및 대체 배열을 사용하면 단일 제목 문자열에서 일련의 검색을 수행하고 작업을 바꿀 수 있습니다. 주제 문자열에 대해 배열을 사용하면 많은 주제 문자열에서 동일한 검색을 수행하고 바꿀 수 있습니다.

0
$text = '<a any text here>nothing or space here</a>'; 
$rep = ''; 
$pat = '|<a[^>]*>\S*</a>|'; 
echo preg_replace($pat,$rep,$text); 

편집 : 잘못된

$text = '<a any text here>nothing or space here</a>'; 
$rep = '<a>\1</a>'; 
$pat = '|<a[^>]*>([^<]*)</a>|'; 
echo preg_replace($pat,$rep,$text); 
+1

나는 OP가 "여기에있는 모든 텍스트"부분이 아니라 전체 문자열을 제거하려고한다고 생각한다. (붉은 색이 너무 작기 때문에 구문 하이 라이터가 약간 열광적이다.) –

+0

ops, 멍청한 놈 ... 나는 미안하지만 제 4 일째입니다. 최선을 다해 여전히 함정에 빠져 있습니다. – Cesar

관련 문제