2011-01-30 14 views
1

前でそれを持っている文字列がなくなったので、私は、文字列の前に「<より小さい」を追加するときWhanが起こる表示されていない文字列の前に[」didnのを追加しますトンディスプレイは、私は私のPHPコードに]にそれらをエコーとき。「<」それはもう

E.g: 
$search = trim('wdisappear W'); // all the words were disappeared when < in front 
$search = explode(" ", $search); // 
$sizeof_search = count($search); // 


for($i = 0; $i < $sizeof_search; $i++){ 
    $l = strlen($search[$i]); 
    echo '<'.$search[$i].'<'.$l; 
} 

私はFirefoxのにPHPファイルを開くと。 'wdisappear W'は表示されません!なぜ??

そして、どのように私は前に

<

を置くことができます?

ありがとうございます!

答えて

7

これは、<がhtml要素を開くためです。これにより、FFがHTMLマークアップとして解釈されるため、テキストの一部が見えなくなります。 &lt; htmlエンティティを出力するか、htmlspecialchars関数を使用して出力をエスケープしてエスケープします。

+0

ページソースを表示すると正しい出力が表示されるはずです。ブラウザのHTMLパーサーであり、それを理解しようとしています。 – xzyfer

4

デフォルトでは、PHPはコンテンツをtext/htmlとして配信し、HTML <ではタグを開きます。したがって、あなたのコンテンツは無効なタグとして解釈され、表示されません。 &lt;を使用してエスケープする必要があります。エンコードする必要があるその他の予約文字があります。 htmlspecialcharsを使用してすべてを一度に行うことができます。

また、エスケープする必要のないコンテンツをtext/plainとして配信することもできます。 (下の方には明らかにHTMLを使用することはできません)

3

文字の<は、タグの先頭に特別な意味を持ちます。 htmlspecialcharsを呼び出して<をHTMLエンティティ&lt;に変換し、ブラウザに正しく表示されるようにします。また、$search[i]という値でこれを呼び出すこともできます。そうしないと、アプリケーションにcross-site scriptingという脆弱性が残る可能性があります。

これを試してみてください:

echo htmlspecialchars('<' . $search[$i] . '<' . $l); 

をドキュメントから:

特定の文字はHTMLで特別な意味を持っている、と彼らはその意味を維持するのであればHTMLエンティティで表現されなければなりません。この関数は、これらの変換が行われた文字列を返します。翻訳は毎日のウェブプログラミングにとって最も有用なものです。

関連する問題