> 백엔드 개발 > PHP 튜토리얼 > PHP 정규식 효율성 탐욕, 비탐욕 및 역추적 분석(권장)

PHP 정규식 효율성 탐욕, 비탐욕 및 역추적 분석(권장)

高洛峰
풀어 주다: 2023-03-04 17:16:02
원래의
1884명이 탐색했습니다.

우선 정규식 중 욕심이 많은 것과 그렇지 않은 것이 무엇인지 알아볼까요? 아니면 일치 우선순위 수량자는 무엇이고 우선순위 수량자를 무시하는 것은 무엇입니까?

그렇습니다. 개념이 무엇인지 모르겠습니다. 예를 들어 보겠습니다.

한 학생이 그 사이의 내용을 필터링하고 싶어 정규 규칙과 절차를 이렇게 썼습니다.

$str = preg_replace(&#39;%<script>.+?</script>%i&#39;,&#39;&#39;,$str);//非贪婪
로그인 후 복사

이상이 없는 것처럼 보이지만 사실은 그렇지 않습니다.

$str = &#39;<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>&#39;;
로그인 후 복사

이면 위의 과정을 거친 후 결과는

$str = &#39;<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>&#39;;
$str = preg_replace(&#39;%<script>.+?</script>%i&#39;,&#39;&#39;,$str);//非贪婪
print_r($str);
//$str 输出为 <script>alert(document.cookie)</script>
로그인 후 복사

아직 원하는 효과를 얻지 못하고 있습니다. 위의 것은 탐욕이 아니며, 어떤 것은 게으름이라고도 합니다. non-greedy의 표시는 +?, *?, ?? 등과 같은 정량적 메타 문자 뒤에 ?를 추가하는 것입니다(더 특별합니다. 이에 대해서는 향후 블로그에서 작성하겠습니다). 즉, ?를 쓰지 않으면 욕심이 없다는 뜻이다. 예를 들어

$str = &#39;<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>&#39;;
$str = preg_replace('%<script>.+</script>%i','',$str);//非贪婪
print_r($str);
//$str 输出为 
            
            

            
        
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿