문제

PHP 태그 내의 내용과 일치하는 데 문제가 있습니다.

현재이 코드가 있지만 작동하지 않습니다.

<?php preg_match_all('/<\?php(.+)\?>/', $str, $inside_php); ?>

eval ()와 같이 다른 일을 할 수 있도록 내용을 검색해야합니다.

도움이 되었습니까?

해결책

바로 거기서 멈춰라, 당신은 이렇게하고 싶지 않습니다!

당신은 사용할 수 있습니다 PHP의 토큰 화제 연장 문자열을 토큰으로 나누려면 모든 PHP 소스 코드를 안정적으로 찾을 수 있습니다. 그런 다음 토큰으로 원하는 변형을 할 수 있습니다. 정규 표현은이 작업의 도구가 아닙니다 (숟가락으로 불을 내놓고 싶지 않습니까?)

$tokens = token_get_all($string);
foreach ($tokens as $token) {
    if (is_array($token)) {
        if (!in_array($token[0], array(T_INLINE_HTML, T_OPEN_TAG, T_CLOSE_TAG))) {
            echo $token[1];
        }
    } else {
        echo $token;
    }
}

다른 팁

기간 (또는 DOT)은 새로운 라인과 일치하지 않습니다.

([.\n\r]+)

그렇게 ^^

<?php preg_match_all('/<\?php([.\n\r]+)\?>/', $str, $inside_php); ?>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top