【发布时间】:2013-07-19 22:39:43
【问题描述】:
我正在尝试在 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 字符的文本?
【问题讨论】:
-
请把文件内容贴到pastebin并添加问题链接
-
文件内容在这里pastebin.com/kzXqwwVT