2011-04-19 8 views
0

&&에 (이미있는 & 변경되지 않습니다 내 모든 &&로 변경되지만 변경되지 않습니다 편리한 preg_replace이다 또는 유사한 기능이있는 경우 궁금 적절한 형식으로).레그-교체, 엄격한 XHTML, PHP, 앰퍼샌드 오류

(사용자 제출) &이있는 페이지를 표시하는 데 문제가 있으며 페이지에 표시하기 전에 (mysql에서 가져온 텍스트 블록에서) 변경하고 싶습니다.

도움을 받으실 수 있습니다. 건배.

PS : 나는 양쪽에 공간이있는 &와 않는 str_replace를 사용하여 생각,하지만 내가 Bob & Jenny 대신에 Bob &Jenny 같은 오타에 대해 생각 중지 (사용자가 제출 된 이후).

+0

두 번/부분적으로 인코딩 한 것처럼 들립니다. 왜 데이터를 인코딩 및 인코딩 해제했는지 파악하고 그 문제를 해결해야합니다. –

+0

나는 @Drackir을 인코딩하지 않았다. 그것은 단지 xhtml strict에서, 사용자가 'Bob & Jenny'와 같은 것을 갖는 문장을 제출하면 페이지 표시를 방해 할 것이다. –

+0

어디에서 여분의'&'을 얻고 있습니까? 사용자가 제출하고 있습니까? 아직 인코딩하지 않았다면 데이터에 '&'이있는 이유에 대해 혼란스러워합니다. –

답변

1

당신은에 대한 ?! 주장을 사용할 수 있습니다

$html = preg_replace('/&(?!#?\w+;)/', "&", $html); 
       # or just (?!amp;) 

를 이것은 또한 & A를 기존 생략; 및 기타 & lt; 또는 & # 123; 엔티티. 그러나 그것은 확실히 결점이 없습니다.

관련 문제