정규 표현식
%(<[^>]+?>)\s*?((?:\w+\s*)*)\s*?(</[^>]+?>)%im
사이에 간단한 여러 단어 문구를 포함한 기본적인 단어를 사로 잡고 적절한 여는 태그와 닫는 태그 및 전체 일치, 시작 태그, 단어/구문 및 닫기 태그를 그룹화하여 각각 쉽게 액세스 할 수 있도록하십시오.
그래서 입력 내용을 HTML 소스 코드라고합니다. 그런 다음 PREG_SET_ORDER 플래그와 함께 preg_match_all을 실행하십시오. foreach()를 사용하여 루프를 반복하는 데 유용한 배열 배열을 반환합니다.
아래의이 함수에서 $ html은 검색 할 소스 페이지이고 $ matches는 결과가 채울 값으로 전달되는 빈 배열입니다.
<?php
$html='
This is a <b>word</b>.
This is not a word.
This is a <span>three word phrase</span>.
';
$regex ='%(<[^>]+?>)\s*?((?:\w+\s*)*)\s*?(</[^>]+?>)%im';
preg_match_all($regex, $html, $matches, PREG_SET_ORDER);
foreach($matches as $val) {
//$val[0] will always be the entire match with the tags
echo "full match: " . $val[0] . "\n";
//$val[1] will always be the opening tag
echo "opening tag: " . $val[1] . "\n";
//$val[2] will always be the word or words, if separated by spaces
echo "word: " . $val[2] . "\n";
//$val[3] will always be the closing tag
echo "closing tag: " . $val[3] . "\n\n";
}
?>
위 스크립트의 출력 :
full match: <b>word</b>
opening tag: <b>
word: word
closing tag: </b>
full match: <span>three word phrase</span>
opening tag: <span>
word: three word phrase
closing tag: </span>
는 기존의 HTML을 유지하는 것이 중요합니다 (즉, 당신이 일치하는 문자열을 대체하려는 경우)? 그렇지 않은 경우 HTML 태그를 제거한 다음 일치 항목을 실행할 수 있습니다. –
패턴을 일치 시키려면 일치시킬 기준이 있어야합니다. 일치시키고 자하는 패턴을 어떻게 결정할 건가요? 기준은 무엇입니까? IE : 첫 4 단어 일치 ... 등. 그것 없이는 당신이 작동하는 패턴을 찾는데 도움이되지 않습니다. –
어떻게 패턴을 생각해 낼지에 대한 긴 배경이 있습니다.하지만 긴 이야기를 짧게 줄이기 위해 "This is a word"라는 문자열이 있다고 가정 해 봅시다. 정규식을 사용하여 "** word" – Enthusiast