在drupal的聚合器模块中,我对Facebook页面的RSS源的Facebook标题项有疑问。文本的编码是HTML / unicode,等同于字符。
تجربة
我决定在template.php中使用myTheme_aggregator_block_item(&$item, $feed =0);
来处理使用htmlspecialchars_decode()
修改$ item->标题。
我写了一个print_r($ item)来了解它的结构,它打印出如下内容:
Array
(
[item] => stdClass Object
(
[iid] => 16
[fid] => 1
[title] => تجربة نص عربي من البداية بدون نص لاتيني.
[link] => http://www.facebook.com/gharibderma/posts/303019283212608
[author] => Khaled Gharib Derma Clinic
[description] => تجربة نص عربي من البداية بدون نص لاتيني.
[timestamp] => 1407389794
[guid] => www.facebook.com/notification/7f39a6557fe0b0857ce28dd9a0b26c13
)
[feed] => 0
)
我使用了以下钩子:
function myTheme_aggregator_block_item(&$item, $feed = 0) {
$item['item']->title = htmlspecialchars_decode($item['item']->title).'***';
}
在聚合器的块中,项目列表变为空白,即列表中没有文本的装饰点。并且聚合器的更多页面中的项目标题保持不变,编码错误تج...
在这里我感到困惑:在数组中访问对象的属性是一个问题,还是在返回函数中引用的修改后的$ item时出现问题?!
答案 0 :(得分:1)
我不确定这里是否有更多内容(我不使用Drupal)但我确实知道您需要使用html_entity_decode()
代替htmlspecialchars_decode()
来转换这些实体:
$item['item']->title = html_entity_decode($item['item']->title).'***';
在线演示here。