2012-01-04 13 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 Answerに従ってください。

5

私はPHPは、HTML文字をエスケープする必要がありますに組み込まれている関数を使用します:

ではなく、それははるかに簡単であるように私自身のローリングを。 double_encodeは、PHPは既存のHTML エンティティをエンコードしませんオフにすると

htmlentities()htmlspecialchars()は、明示的にdouble_encodeパラメータでこれを処理します。デフォルトではすべてを変換します。

関連する問題