更改数组中对象的属性

时间:2014-08-08 18:42:48

标签: php arrays facebook drupal-7

在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时出现问题?!

1 个答案:

答案 0 :(得分:1)

我不确定这里是否有更多内容(我不使用Drupal)但我确实知道您需要使用html_entity_decode()代替htmlspecialchars_decode()来转换这些实体:

$item['item']->title = html_entity_decode($item['item']->title).'***';

在线演示here