내 스크립트에서 다음 유형의 표현식을 삭제하고 싶습니다.php : 정규식을 통해 단어 삭제
<a any text here>nothing or space here</a>
나는 3 가지 기능으로 할 수 있지만 길이가 짧다고 생각합니다. 나를 도울 수 있습니까? http://www.regular-expressions.info/php.html에서 촬영 미리
내 스크립트에서 다음 유형의 표현식을 삭제하고 싶습니다.php : 정규식을 통해 단어 삭제
<a any text here>nothing or space here</a>
나는 3 가지 기능으로 할 수 있지만 길이가 짧다고 생각합니다. 나를 도울 수 있습니까? http://www.regular-expressions.info/php.html에서 촬영 미리
preg_replace('/<a(.*?)>\s*<\/a>/', '', $str)
이 작동합니까?
편집 : Alan Moore가 맞습니다.
"여기에 아무것도 없거나 공백이 없다"는 것을 제외하고는'\ s *'는'\ s *'를 의미하고'\ s +'는 의미하지 않습니다. –
@ Gazler : 한 줄에 두 개의 ''요소가있는 경우 정규 표현식이 한꺼번에 그 둘 사이에있는 모든 것을 더한 것입니다. –
에서 감사 :
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
는 대체 문자열로 대체 대상 문자열에서 정규식 패턴의 모든 일치 문자열을 반환합니다.
최대 한도로 대체됩니다. 한 가지 중요한 차이점은 제한을 제외한 모든 매개 변수가 문자열 대신 배열이 될 수 있다는 것입니다.
이 경우 preg_replace
은 여러 번 작업을 수행하여 배열의 요소를 동시에 반복합니다. 일부 매개 변수에는 문자열을 사용하고 다른 매개 변수에는 배열을 사용할 수도 있습니다. 그런 다음 함수는 배열을 반복하고 각 반복마다 동일한 문자열을 사용합니다. 패턴 및 대체 배열을 사용하면 단일 제목 문자열에서 일련의 검색을 수행하고 작업을 바꿀 수 있습니다. 주제 문자열에 대해 배열을 사용하면 많은 주제 문자열에서 동일한 검색을 수행하고 바꿀 수 있습니다.
$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);
나는 OP가 "여기에있는 모든 텍스트"부분이 아니라 전체 문자열을 제거하려고한다고 생각한다. (붉은 색이 너무 작기 때문에 구문 하이 라이터가 약간 열광적이다.) –
ops, 멍청한 놈 ... 나는 미안하지만 제 4 일째입니다. 최선을 다해 여전히 함정에 빠져 있습니다. – Cesar
그냥 (!) 참고로, 당신은 HTML을 청소하기 위해 찾고 있다면, 당신은 HTML 파서 더 낫다. 이 유명한 대답 (/ question)을 참조하십시오. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – pinkgothic