2012-01-04 4 views
1

나는이 :PHP는 &으로 바꾸지 않음 & amp; 순간

//replace common characters 
$search = array('&', '£', '$'); 
$replace = array('&', '£', '$'); 
$html= str_replace($search, $replace, $html); 

이 코드의 문제는 &가 있었는지 이미 다시 변환하려고합니다 변환이다. 어떻게 이런 일이 일어나지 않을 것인가?

답변

1

은 내가 예를 제공하지만, 후자이있는 경우 ' & ' 다음이 당신을 위해 작동 희망처럼 작동합니다

$str = 'India & Aust & New '; 
$regex = '/(\s\&\s)/i'; 
$replace = ' & '; 

if(preg_match($regex, $str)){ 
    $new_str = preg_replace($regex, $replace, $str); 

    echo '<pre>'; 
    echo htmlspecialchars($new_str, ENT_QUOTES); 
    echo '</pre>'; 
} 
else{ 
    echo 'Not matched!'; 
} 

을하지만 당신은 양쪽에 공간이있는 경우 작동이 기억 앰퍼샌드 또는 원하는 것을 선택하십시오. 그렇지 않으면 @Treffynnon 대답을 따르십시오 ..

5

가 나는 PHP는 HTML 문자를 탈출하는 그 기능을 내장 사용합니다 :

보다는 훨씬 쉽게 그대로 내 자신의 압연. htmlentities()htmlspecialchars() 명시 적으로 double_encode 매개 변수를 사용하여이 문제를 해결할 : double_encode를 끄면

PHP는 HTML을 엔티티를 기존 인코딩하지 않습니다. 기본값은 모든 것을 변환하는 것입니다.

관련 문제