0

所以,我使用 Twitter API 1.1 $connection->post 来发送推文。问题是,当我有一个特殊字符时,例如推文字符串中的撇号,即:

$vinedesc = 'News Reporter's reaction';
$connection->post('statuses/update', array('status' => $vinedesc));

该推文包含 HTML 实体,即:

 News Reporter's reaction

我怎样才能阻止这种情况发生?有人建议 rawurldecode 但以下不起作用,我猜我没有正确使用它给定上下文:

$vinedescraw = 'News Reporter's reaction';
$vinedesc = rawurldecode($vinedescraw);
$connection->post('statuses/update', array('status' => $vinedesc));

有什么建议么?

4

3 回答 3

1

我有一个类似的问题,虽然我知道源字符串已经嵌入了 HTML 字符。我在 PHP 站点 ( http://php.net/manual/en/function.html-entity-decode.php ) 上发现了这种转换,它立即解决了问题:

$vinedesc=preg_replace_callback("/(&#[0-9]+;)/", function($m) { return mb_convert_encoding($m[1], "UTF-8", "HTML-ENTITIES"); }, $vinedescraw); 

正如 Norman Bird 的回答所提到的,转换为 UTF-8 就成功了!

于 2016-01-27T16:23:34.643 回答
0

我遇到了同样的问题,在尝试了 addlashes()、htmlentities 和所有编码的东西之后。事实证明,Twitter 喜欢文件类型为 UTF-8 而不是 ANSI 或其他任何类型。:-) 现在我的引号和撇号很好。

于 2014-08-20T00:25:51.957 回答
0

该行:

$vinedescraw = 'News Reporter's reaction';

有语法错误,应该是:

$vinedescraw = 'News Reporter\'s reaction';

此外,您应该使用 rawurlencode() 'News Reporter's reaction'作为参数,或 rawurldecode() 和

'News Reporter's reaction'

作为论据,从一个变为另一个。

于 2013-09-18T23:06:11.897 回答