php preg_replace가 실패하면 어떻게 해야 합니까?

藏色散人
풀어 주다: 2023-03-08 13:20:01
원래의
2189명이 탐색했습니다.

php preg_replace 교체 실패에 대한 해결 방법: 먼저 해당 PHP 코드 파일을 연 다음 교체할 수 없는 문자에 대한 ASCII 코드를 인쇄하고 교체하세요.

php preg_replace가 실패하면 어떻게 해야 합니까?

이 글의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php preg_replace 공간을 교체할 수 없습니다.

귀찮은 작은 버그입니다. 텍스트(utf-8로 인코딩됨)를 읽고 공백을 바꾸려고 합니다. str_replace(" "..)나 preg_replace("/s/"..)가 작동하지 않습니다.

 <?php
 
 $str = &#39;<p>    你好<p>&#39;;
 $str = preg_replace(&#39;/\s/is&#39;,&#39;&#39;,$c);
 $str = str_replace(" ", "a", $str); 
 var_dump($str); //不起作用
로그인 후 복사

ord()로 대체할 수 없는 공간만 봤습니다. 이 utf-8 공간은 꽤 특별합니다. ASCII 194 + 160이 나옵니다.

 <?php
 
 $str = &#39;<p>    你好<p>&#39;;
 $str = str_replace(chr(194) . chr(160), "a", $str);  // 解决方法1
 $str = preg_replace(&#39;/\xC2\xA0/is&#39;, "a", $str);  // 解决方法2
 var_dump($str); //ok
로그인 후 복사

문제의 근본은 UTF-8 인코딩에 특수 문자가 있다는 것입니다. 해당 인코딩은 "0xC2 0xA0"(194 160)입니다. 문자로 변환하면 공백으로 나타납니다. 일반적인 반자 공백(ASCII 0x20)과 동일하지만 유일한 차이점은 너비가 압축되지 않는다는 점이므로 웹 페이지 레이아웃(예: 첫 줄 들여쓰기)에 자주 사용됩니다. GB2312 및 유니코드와 같은 다른 인코딩 방법에는 이러한 문자가 없습니다.

대체 불가능한 다양한 문자를 완성하세요:

chr(194).chr(160) 变现为空格
chr(227).chr(128) 变现为空格
chr(226).chr(128).chr(172).chr(226).chr(128).chr(172).chr(30) 变现为空
로그인 후 복사

요약: 대체할 수 없는 문자의 경우 언제든지 ASCII 코드를 인쇄하여 바꿀 수 있습니다.

【추천 학습: "PHP 비디오 튜토리얼"】

위 내용은 php preg_replace가 실패하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿