2010-11-27 8 views
3

PHP에는 문자열의 16 진수 코드를 검색하여 해당하는 char 값으로 변환하는 함수가 있습니까?16 진수 코드를 문자로 변환

예를 들어 - 나는

다음

에 "Hello World \의 x19s"를 포함하는 문자열을 그리고 난에

에 "Hello World의"

감사로 변환 할 전진.

답변

4

이 코드는 "Hello World \ x27s"를 "Hello World 's"로 변환합니다. "\ x19"를 "end of medium"문자로 변환합니다. 0x19가 ASCII로 표시되기 때문입니다.

$str = preg_replace('/\\\\x([0-9a-f]{2})/e', 'chr(hexdec($1))', $str); 
+0

E_WARNING에 '&'으로 바뀔 것이다 : 제 2 형 - preg_replace이다() :에는/e 수정입니다 더 이상 지원되지 않는 대신 preg_replace_callback을 사용하십시오. - –

4

것은 내가 틀렸다면 정정 해줘하지만 난 당신과 같이 콜백을 변경해야한다고 생각 :

$str = preg_replace('/\\\\x([0-9a-f]{2})/e', 'chr(hexdec(\'$1\'))', $str); 

을 '='(\ X3D)처럼 작은 따옴표에게 문자를 추가함으로써 미세 변환됩니다 너무.

+0

E_WARNING : type 2 - preg_replace() :/e 수정자를 더 이상 지원하지 않습니다. 대신 preg_replace_callback을 사용하십시오. - –

2

/e는 preg_replace_callback을 사용하도록 현재 PHP에서 오류를 생성합니다. 이것을 시도하십시오 :

preg_replace_callback('/\\\\x([0-9a-f]{2})/', function ($m) { return chr(hexdec($m[1])); }, $str); 
+0

PHP에서/e 수정자가 오류를 발생시킵니다. 그러나 당신의 코드는 여전히 문자열의 헥스 코드를 남겨두고 문자로 변환하지 않았습니다. –

0

/e 수정자를 사용하면 PHP 오류가 발생합니다. 새로운 PHP 업데이트로 인해 더 이상 사용되지 않습니다. 문자로 hexcodes를 변환하는 올바른 방법은 다음과 같습니다

$str = html_entity_decode($str, ENT_QUOTES | ENT_XML1, 'UTF-8'); 

&

관련 문제