인코딩은 지구상에서 지옥입니다. 나는 정말로 바보 같아야한다.PHP Twitter API iconv() 및 mb_strtolower()를 사용하여 인코딩 문제
내 북마크 라이브러리를 만들기 위해 트위터에서 해시 태그를 추출 중입니다. 많은 twits 스페인어에 있기 때문에
$url = 'https://api.twitter.com/1.1/statuses/mentions_timeline.json';
$requestMethod = 'GET';
$getfield = '?count=200&include_rts=1&max_id=397109847755210753';
$twitterGET = new TwitterAPIExchange($settingsGET);
$twitterPOST = new TwitterAPIExchange($settingsPOST);
$jsonString = $twitterGET->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
$json_arr = json_decode($jsonString, true);
그들은 UTF-8
에 인코딩하도록되어 내가 읽고에서 á
트위터와 같은 문자를 가지고,하지만 난 유니 코드 물건을 얻는 경우 메신저를 낮추기 위해 해시 태그 문자열을 변환 할 때 .
foreach ($json_arr as $mytwit) {
$twitText=$mytwit["text"];
$twitHashTags=$mytwit["entities"]["hashtags"];
foreach($twitHashTags as $tag){
$tag=mb_strtolower($tag, 'UTF-8');
$twitKeyWords[]=$tag;
echo $tag;
}
#==>outputs: tecnolog\u00edas
}
그래서 다음에 내가 인코딩이 무엇인지 추측하려고 내가 (아래 단지 한 많은 시도이다)이 아름다운 행성에 모든 가능한 인코딩에 사용할 수있는이 코드를보십시오 : 아래 코드를 참조
foreach($twitHashTags as $tag){
$tag = iconv("ISO-8859-1", "UTF-8//IGNORE", $tag);
$tag=mb_strtolower($tag, 'UTF-8');
$twitKeyWords[]=$tag;
echo $tag;
}
==>outputs: tecnolog\u00e3\u00adas (even worse, thanks)
2 개의 질문이 있습니다.
하는 경우는, 왜 트위터는 예를
$twit["entities"]["bloody_encoding"]
에 대한 같은 일부 필드에 윗의 인코딩을 지정하지 않는 문자열의 인코딩을 추측 개념적으로 불가능?아무도 인형을위한 PHP- 트위터 인코딩 조언이 있습니까?
아, 내가이 마술을 시도했지만 불행히도 작동하지 않았다 : How to decode Unicode escape sequences like "\u00ed" to proper UTF-8 encoded characters?
메시지 JSON입니까? –
원래는 Twitter API의 JSON 이었지만 정규식 해시 태그와는 별도로 맞춤 태그를 사용했기 때문에 정규식을 사용했습니다. 예를 들어'_technology '와 같은 태그를 가질 수 있습니다. ''_computer technology; "''; ''끝에 공백을 포함하는 태그를 잡는 것에주의하십시오 ... – fartagaintuxedo
오늘 json과 twit의 텍스트를 얻는 코드 쓰루를 보여주기 위해 오늘 내 질문을 편집 할 것입니다 – fartagaintuxedo