2

PHP 5.3 でツイートからテキストを解析しようとしていますが、Unicode 文字を含むユーザーのメンション、ハッシュタグ、およびリンクの解析に問題があります。

まず、ツイートを取得して txt ファイルに保存します。

$tweets_file = createFile('cache/'.$twitteruser.'-tweets.txt', json_encode($tweets));

その後、テキスト ファイルに Unicode 文字の束が表示されます (例: Landsli\u00f0sma\u00f0ur)。

すべてのツイートを表示しようとすると、次のようにします。

function twitterify($text) {
  $text = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#u", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $text);
  $text = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#u", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text);
  $text = preg_replace("/@(\w+)/u", "<a href=\"http://www.twitter.com/\\1\" target=\"_blank\">@\\1</a>", $text);
  $text = preg_replace("/#(\w+)/u", "<a href=\"http://search.twitter.com/search?q=\\1\" target=\"_blank\">#\\1</a>", $text);
  return $text;
}

$tweets_file = file_get_contents('cache/'.$queried_user.'-tweets.txt');
$tweets = json_decode($tweets_file);
foreach($tweets as $tweet) {
  echo twitterify($tweet->text);
  // do other stuff...
}

たとえば、ハッシュタグに Unicode 文字が含まれるまで、ここではすべて正常に機能します。私preg_replaceはその文字で停止し、ハッシュタグのような#rafhlaðaレンダリングは<a href="#">#rafhla</a>ða.

Unicode 文字を含むテキストを適切にレンダリングするにはどうすればよいですか?

4

2 に答える 2

0

これをスクリプトに追加してみてください (preg_replace は除外してください):

header('Content-Type: application/json; Charset=UTF-8');

解決策 2:

$tweets_file = file_get_contents('cache/'.$queried_user.'-tweets.txt', FILE_TEXT);
于 2013-07-20T20:45:42.813 に答える