php preg_replace 교체 실패에 대한 해결 방법: 먼저 해당 PHP 코드 파일을 연 다음 교체할 수 없는 문자에 대한 ASCII 코드를 인쇄하고 교체하세요.
이 글의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
php preg_replace 공간을 교체할 수 없습니다.
귀찮은 작은 버그입니다. 텍스트(utf-8로 인코딩됨)를 읽고 공백을 바꾸려고 합니다. str_replace(" "..)나 preg_replace("/s/"..)가 작동하지 않습니다.
<?php $str = '<p> 你好<p>'; $str = preg_replace('/\s/is','',$c); $str = str_replace(" ", "a", $str); var_dump($str); //不起作用
ord()로 대체할 수 없는 공간만 봤습니다. 이 utf-8 공간은 꽤 특별합니다. ASCII 194 + 160이 나옵니다.
<?php $str = '<p> 你好<p>'; $str = str_replace(chr(194) . chr(160), "a", $str); // 解决方法1 $str = preg_replace('/\xC2\xA0/is', "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!