문제

PHP를 통해 파일의 특정 부분을 얻으려면 regex를 사용하고 있습니다!

입력 예를 보여 드리겠습니다. 예 :

=== KEYWORD1 ===
CONTENT

==== ANOTHERKEYWORD ====

CONTENT2

=== TESTKEYWORD ===

CONTENT3
.

My Regex는 다음과 같을 수 있습니다 : $pattern = "/.*=+ SEARCHTERM =+(.*?)=+.*=+.*/s";

SEARCHTERM는 정규식의 유연한 부분입니다.

여기에서 내가 무엇을 기대하는지에 대한 개요와 내가받는 것 :

    searchterm 키워드로 바꾸면 CONTENT를 기대하지만 아무것도 얻지 못한다. searchterm anothingkeyword 로 바뀌면 CONTENT2andd가 그것을 얻을 것으로 기대합니다 (그래서이 경우 ) searchterm testkeyword 로 바뀌면 testkeyword로 대체되고 를 얻지 못한다.

    이있을 수 있지만 을 초과하는 빈 줄이 될 수는 없지만 의 빈 줄은 and 이 없으면 정규식이 먼저 다른=== anything=== searchterm 이후에만 없음이 없으면 모든 것을 읽을 때까지 모든 것을 읽으십시오.

    CONTENT3를 생각했지만 이렇게하면 SyntaxErrors가 발생합니다.

    도움이 매우 높이 평가됩니다!

도움이 되었습니까?

해결책

다음을 시도하십시오 :

$str = <<<EOD
=== KEYWORD1 ===
CONTENT

==== ANOTHERKEYWORD ====

CONTENT2

=== TESTKEYWORD ===

CONTENT3    

EOD;

foreach(array('KEYWORD1', 'ANOTHERKEYWORD', 'TESTKEYWORD') as $keyword) {
    preg_match("/.*=+ $keyword =+([^=]+)/m", $str, $m);
    echo "$keyword -> $m[1]\n";;
}
.

출력 :

KEYWORD1 ->
CONTENT


ANOTHERKEYWORD ->

CONTENT2


TESTKEYWORD ->

CONTENT3
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top