<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 这部分内容与文章正文无关,可以是任意PHP代码示例</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummyFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Hello, this is a dummy function."</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">dummyFunction</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<preg_replace_callback_array中常见的正则表达式写法错误有哪些?避免这些坑></p>
<p>在PHP中,<code>preg_replace_callback_array
항상 정규 표현식에 분리기를 추가하고 전후에 분리기와 일치하는 것을 잊지 마십시오.
정규 표현의 많은 특수 인물을 피해야합니다. 특히 PHP 문자열에 규칙을 작성할 때 백 슬래시 자체도 탈출해야하므로 이중 탈출 오류가 발생합니다.
</span><span><span class="hljs-variable">$patterns</span></span><span> = [
</span><span><span class="hljs-string">'/\\d+/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// 옳은,PHP문자열에서\\단일을 나타냅니다\</span></span><span>
</span><span><span class="hljs-string">'/\d+/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// 옳은,单引号문자열에서\직접 효과적입니다</span></span><span>
</span><span><span class="hljs-string">"/\d+/"</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// 옳은,双引号문자열에서\d식별 할 수 있습니다</span></span><span>
</span><span><span class="hljs-string">"/\d+/"</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// 일반적인 오류는 다음과 같이 작성됩니다 "/\\d+/" 일치하는 실패를 일으킨다</span></span><span>
];
피하십시오 : 단일 따옴표를 사용하여 정규 표현식을 마무리하거나 탈출 복잡성을 줄이거 나 이중 인용문과 단일 따옴표를 신중하게 구별하십시오.
많은 개발자들은 일치 할 때 그룹 수를 줄이거 나 이름이 지정된 그룹을 사용하기를 원하지만 표준화되지 않은 작문은 일치 실패를 유발합니다.
</span><span><span class="hljs-comment">// 캡처되지 않은 그룹화</span></span><span>
</span><span><span class="hljs-string">'/foo(?:bar)/'</span></span><span> </span><span><span class="hljs-comment">// 옳은,(?:)캡처되지 않은 그룹화를 나타냅니다</span></span><span>
</span><span><span class="hljs-string">'/foo(bar)/'</span></span><span> </span><span><span class="hljs-comment">// 캡처 그룹화</span></span><span>
</span><span><span class="hljs-comment">// 이름 그룹화,옳은写法:</span></span><span>
</span><span><span class="hljs-string">'/foo(?P<name>bar)/'</span></span><span>
</span><span><span class="hljs-comment">// 잘못된 글:</span></span><span>
</span><span><span class="hljs-string">'/foo(?<name>bar)/'</span></span><span> </span><span><span class="hljs-comment">// 비록 일부PHP버전 지원,그러나 그렇지 않습니다PCRE기준,가능한 호환성</span></span><span>
피하는 방법 : 표준 이름이 지정된 그룹화 구문을 사용하는 것이 좋습니다 (? P
복잡한 규칙을 작성할 때, 브래킷 불일치 및 정량자를 사용하는 오류와 같은 구문 문제는 발생하기 쉬우므로 preg_replace_callback_array의 직접 오류 또는 불일치가 발생합니다.
</span><span><span class="hljs-variable">$patterns</span></span><span> = [
</span><span><span class="hljs-string">'/(foo(bar/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// 브래킷 불일치,오류를보고하십시오</span></span><span>
</span><span><span class="hljs-string">'/foo+/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) { </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]; }, </span><span><span class="hljs-comment">// 정량화 자의 잘못된 사용,+ 적용 foo 모호한 의미를 유발합니다</span></span><span>
];
피하십시오 : IDE 또는 온라인 도구를 사용하여 정규 표현식을 확인하여 올바른 구문을 확인하십시오.
콜백 함수의 예상 일치 결과는 정규식 정의와 일치하지 않으므로 콜백에서 액세스 된 색인 또는 이름이 지정된 그룹화가 존재하지 않습니다.
</span><span><span class="hljs-variable">$patterns</span></span><span> = [
</span><span><span class="hljs-string">'/(foo)(bar)/'</span></span><span> => </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$matches</span></span></span><span>) {
</span><span><span class="hljs-comment">// $matches[1] 예 foo, $matches[2] 예 bar</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$matches</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]; </span><span><span class="hljs-comment">// 존재하지 않는 지수,오류를보고하십시오</span></span><span>
}
];
피하십시오 : 콜백을 작성할 때 정의되지 않은 항목에 대한 액세스를 방지하기 위해 일반 캡처의 그룹 이름 또는 색인을 확인하십시오.
예를 들어, 케이스, 단일 라인 모드, 멀티 라인 모드 등을 무시하여 기대치를 충족시키지 못하는 일치 결과가 일치합니다.
</span><span><span class="hljs-string">'/pattern/i'</span></span><span> </span><span><span class="hljs-comment">// i 사례가 무시되었음을 나타냅니다</span></span><span>
</span><span><span class="hljs-string">'/pattern/s'</span></span><span> </span><span><span class="hljs-comment">// s 표현하다 . Newlines와 일치합니다</span></span><span>
</span><span><span class="hljs-comment">// 忘记加修饰符일치하는 실패를 일으킨다</span></span><span>
</span><span><span class="hljs-string">'/pattern/'</span></span><span> </span><span><span class="hljs-comment">// 사례에 민감합니다</span></span><span>
피하십시오 : 필요에 따라 수정자를 합리적으로 추가하십시오.
Preg_replace_callback_array를 사용하여 문자열을 사용하는 경우 정규 표현식을 올바르게 작성하는 것이 중요합니다. 일반적인 오류로는 구분자 누락, 탈출 오류, 불규칙한 그룹화 쓰기, 구문 오류, 콜백 매개 변수 오류 및 수정 자 무시가 포함됩니다. 디버깅 도구를 사용하여 그룹화 및 일치 결과를 확인하는 데 사용하는 습관을 작성하면 이러한 함정을 효과적으로 피하고 코드 견고성을 향상시킬 수 있습니다.
이 기사가 preg_replace_callback_array를 사용할 때 일반적인 정규 표현식 쓰기 오류를 피하고보다 신뢰할 수 있고 효율적인 PHP 코드를 작성하는 데 도움이되기를 바랍니다.