2014-07-12 3 views
0

PHP에서 사용자의 텍스트가 일부 나옵니다. 문자 중 하나가 아포스트로피가되어야하지만 대신 문자 아포스트로피가 사용됩니다. %u2019입니다. PHP에서 유니 코드 어포 스트로피 변환

본인은 아무 소용이 다음의 모든 시도 :

$b = urldecode($a); 
$c = utf8_decode($a); 
$d = html_entity_decode($a); 
$e = rawurldecode($a); 

겉보기에이 문자로 다시 켤 수 없습니다이 %u2019.

URLDECODE %의 u2019

utf8_decode %의 u2019

의 html_entity_decode %의 u2019

rawurldecode %의 u2019

답변

1

는 자바 스크립트 문자열을 탈출해야합니다. 브라우저 콘솔에서 escape("’")을 실행하면 동일한 문자열을 볼 수 있습니다. 당신의 PHP는 5.3 PHP는보다 오래된

$str = preg_replace_callback(
      '/%u(\d+)/', 
      function($matches) { 
       return mb_convert_encoding('&#'.hexdec($matches[1]).';', 'UTF-8', 'HTML-ENTITIES'); 
      }, 
      $str 
     ); 

경우, 나이가 PHP가 폐쇄를 지원할 수 없기 때문에 일반 함수로 콜백 함수를 정의해야합니다

는 자바 스크립트 unescape()에 해당 내 PHP 함수를 사용합니다.

+0

이것은 효과가 있습니다! preg_replace_callback을 찾아야 만했습니다 $ str = $ a이 예에서는 훌륭하게 작동했습니다. – Jake

관련 문제