2012-05-08 3 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을 사용하십시오.

2

당신은 적절한 HTML 엔티티로 htmlspecialchars를 변환해야 - 같은

0

이메일 주소로 다루고 있기 때문에 당신이 그냥 숨어없는 결과를 표시하는 방법을 다루는 유연성을 필요 확신 '&lt;'로 당신이 메일 구문 분석이 설치되어 있지 않은 경우 가

내가 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] 

를 추천 할 것입니다 태그

당신이

을 사용할 수 있습니다 1,515,
$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; 
} 
관련 문제