2012-05-08 12 views
1

"<"/">"をタグではなくHTMLの文字列として表示しようとしています。出力 "<"/">" HTMLの文字

私は、ユーザーのフルネームを含むデータベースや電子メールを持っていると私はそれらの両方を表示したいとき、私はこのような形式があります:

Christian Eric Paran <[email protected]>

をしかし、私はそれだけでこのように表示されます

Christian Eric Paran

これをPHPのHTML形式で表示する方法はありますか?

答えて

4

は特別な意味character referencesを使用してHTMLに(<あなたがテキストノードに心配する必要なものである& &&amp;&lt;→)との文字を表します。

htmlspecialchars関数が変換されます。

print htmlspecichars("Christian Eric Paran <[email protected]>"); 
3

問題は、タグを区切るためにHTMLで使用されている<>です。したがって、電子メールアドレスはHTMLタグとして解析され、すべてのブラウザではないにしてもほとんど隠されてしまいます。

&lt;を使用して<をHTMLに、&gt;>として表示します。

データが動的である場合は、印刷する前に上記のエンコーディングを行うにはhtmlentitiesまたはhtmlspecialcharsを使用してください。あなたは適切なHTMLエンティティにhtmlspecialcharsを変換する必要が

2

- あなたがメールアドレスを扱っているので、このような「&lt;

0

としては、あなたがそれだけで隠れていない結果を表示する方法を扱ういくつかの柔軟性が必要になります確信していますタグ

は、私はあなたがメール解析がインストールされていない場合は、この

を使用することができます http://php.net/mailparse_rfc822_parse_addresses

$email = mailparse_rfc822_parse_addresses("Christian Eric Paran <[email protected]>") ; 
    echo $email[0]['display'] ; // Christian Eric Paran 
    echo $email[0]['address'] ; // [email protected] 

をお勧めします

$email = parse_addresses ("Christian Eric Paran <[email protected]>"); 
echo $email ['display']; // Christian Eric Paran 
echo $email ['address']; // [email protected] 

parse_addresses機能

function parse_addresses($address) { 
    $info = array(); 
    preg_match_all ('/\s*"?([^><,"]+)"?\s*((?:<[^><,]+>)?)\s*/', $address, $matches); 
    $info ['display'] = $matches [1] [0]; 
    $info ['address'] = str_replace (array (
      "<", 
      ">" 
    ), "", $matches [2] [0]); 

    return $info; 
} 
関連する問題