2011-01-15 3 views
0

&을 앰퍼샌드로 변환하려면이 PHP snippet을 사용해야합니다. Paul Dixon이 작성한 코드와 똑같은 테스트 코드를 사용하고 있지만 코드에서 앰퍼샌드가 대체되지 않습니다. 왜? 나는 PHP 5.2.6을 사용하고있다.왜이 앰퍼샌드와 일치하는 정규식이 작동하지 않습니까?

$str_fix = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $str); 

다음, 간단하지만 잘못된 정규 표현식 작업 (그것은 또한 &&에서 대체합니다)를 :

$str_fix = preg_replace('/&/', '&', $str); 

편집 : 제기랄, 문제가 있지만, 드루팔 관련 정규 표현식/PHP하지 않습니다! 예, Drupal 모듈에서이 스 니펫을 사용하고 있으며 어떤 이유로 Drupal이 &&으로 변환합니다.

+0

실패한'$ str'의 예제를 게시하면 나에게 잘 작동하는 것 같습니다. –

+0

나는 그것을 말할 것이다 : 나를 위해 완벽하게 작동한다. 그리고 어떤 정규식 문제도 볼 수 없습니다. '$ str_fix '대신'$ str'을 검사 할 수 있습니까? – mario

+0

이 질문에 대한 답변을 찾으셨습니까? – 23inhouse

답변

0

str_replace ('&', '& amp;', $ str)를 사용하면 어떨까요?

+0

기존의 &를 대체하기 때문에 충분하지 않습니다. & – mmersz

0

예제 입력 문자열을 제공해 주시겠습니까?

echo preg_replace('/&(?!#?[a-z0-9]+;)/', '&', "Dogs & Cats & budgies\n"); 

제대로 드루팔 당신은 엔티티를 탈출 두배로 할 수있다 &&를 교체하는 경우

Dogs & Cats & budgies 
0

을 생성합니다

$str_fix = preg_replace('/&(?!#?[a-z0-9]+;)/', '&', $str); 

그런 드루팔 것입니다 원하는 결과였다 출력 &.

관련 문제