2012-02-14 4 views
0

シンプルな操作をしています。str_replace
文字列からすべてのカンマを削除しようとしていますが、これは問題ありません。しかし、文字列を再度変更しようとすると、何とかカンマが再表示されます。私はこれを引き起こさないように私のコードをリファクタリングしました。HTMLエンティティに置き換えられた文字が再表示されます

とにかく私のコードはここにあります。誰かがバグを発見できますか?

$delim=remDelim(fgets($fo)); 
#  echo 'before : '.htmlspecialchars($delim); 
    $delime =str_replace(",",",",$delim); 
    echo 'after : '.htmlspecialchars($delime); 
    $delimed = str_replace("<","",$delime); 
    echo $delimed.'<br />'; 

example output: 
    Jose, jr to Jose&#44; jr to Jose, jr 

私のような文字列は何とか変換されていません。私は名前が混ざっている可能性が最も高いと言い、最後の文字列を作るために最初の文字列を使いました。しかし、うーん、私はそれが事実でないことがわかります。

+1

が少なくとも一度、私は誰もがこの1 :)によってだまさます推測する - のいずれか(FirefoxでU例えばCTRL)ページのソースをプレーンテキストモード(header('Content-type: text/plain');)にブラウザを強制する、または表示します。 – kapa

+0

彼の答えは良いです。唯一の違いは、最後の 'echo'では' htmlspecialchars() 'を使わないことです。印刷されるのは ','ですが、HTMLであるためカンマで表示されます。ブラウザのHTMLソースを確認してください。 [または、このコードのデモを確認してください。](http://codepad.viper-7.com/gY45Dr) – kapa

+0

12MBのページで動作しませんでした(おそらくFirefoxのバグやApache/PHPがうまくいかない大きなページを処理すると応答が停止し、このページをロードするだけで最大2GBのRAMが必要になります)。私はソースを見た,はありませんでした。それから私は12kbページで試しました。これは最終的にソースに,を示しました。それは私が前にコンピュータから見た不思議な振る舞いでした。そして、これは回答した​​ppl(なぜなら、1行の入力= <1kbを使用して)が常に働いていた理由になります。 – YoYoMa

答えて

5

ブラウザでこれを表示している場合は、ブラウザWILLがエンティティテキストではなく実際の文字としてレンダリングすることに注意してください。

+1

はコマンドラインでそれを試しても問題はありません。私はMarcと同様に、ブラウザがレンダリングすると確信しています! – helle

+0

@yoyoma:非常に似た名前の3つの変数がある場合、正しいものを出力していますか?上記のコードはスクリプトの直接カット&ペースト、または再入力ですか? –

関連する問題