$str = "& &svnips  ∴ ≈ osidnviosd & sopinsdo";
$regex = "/&[^\w;]/";
echo preg_replace($regex, "&", $str);
인코딩되지 않은 앰퍼샌드를 모두 인코딩 된 앰퍼샌드로 바꾸려고합니다.
&
과 sopinsdo
사이의 공백을 제거하는 것이 문제입니다.정규식에서 공백을 제거하는 이유는 무엇입니까?
왜 그런가? 당신은 (&
로 대체 문자열을 교체의 끝에 공백을 추가해야하며, &
로 교체 (또는 \의 w) ("&"과 아닌 문자) 당신은이 개 문자를 검색
이 아래 unigg의 대답과 같은 문제가 있습니다 : 그래서 당신이 얻을 수있는 몇 가지 간단한 테스트 케이스에 대한
제대로 HTML을 탈출했다. 이로 인해 원치 않는 동작이 발생할 수 있습니다. – eldarerathis