为什么在以下情况下无法进行数组转换和HTML解析的逻辑?

PHP情人

我有一个关联数组,标题为$allFeeds(执行后print_r($allFeeds);),如下所示:

注意:实际的关联数组$allFeeds非常大。出于理解的目的,我只从这个大数组中放入了一个元素。

   Array
   (
      [0] => Array
      (
         [feed_image] => Array
         (
           [0] => <a href="http://52.1.47.143/photo/928/2_onclick_ok/userid_244/"  class=" js_photo_item_928  photo_holder_image" rel="928" ><img src="http://52.1.47.143/file/pic/photo/2015/04/9bd387c6442135834298d6a17b3f9555_240.jpg"  alt=""  width="180"  height="160"  class="photo_holder" /></a><br />
           [1] => <a href="http://52.1.47.143/photo/927/8/userid_244/" class=" js_photo_item_928  photo_holder_image" rel="927"><img src="http://52.1.47.143/file/pic/photo/2015/04/6eb60ee0e258223ef72a9a632d0ce429_240.png"  alt="" height="84" width="150"  class="photo_holder"  userid="244" /></a>
         )
      )
    )

首先,我要检查键['feed_image']是否存在于关联数组$ allFeeds的内部数组中。如果存在,则$allFeeds[$key]['feed_image']通过如下更改每个数组元素的图像路径来转换数组

注意:我想根据每个标签的'src'属性值创建新数组。在这种情况下,您也可以观察到。

   Array
   (
      [0] => Array
      (
         [feed_image] => Array
         (
           [0] => 2015/04/9bd387c6442135834298d6a17b3f9555%s.jpg
           [1] => 2015/04/2015/04/6eb60ee0e258223ef72a9a632d0ce429%s.png
         )
      )
    )

我尝试遵循以下代码,但对我而言不起作用。我不明白我在犯什么错误。如果有人帮助我纠正错误并获得所需的输出,那就太好了。

$cnt = 0;
foreach($allFeeds as $key => $value) {
  if(isset($allFeeds[$cnt]['feed_image']) && is_array($allFeeds[$cnt]['feed_image'])) {
    $allFeeds[$cnt]['feed_image'][$key] = array_map(function($item) {
      $dom = new DOMDocument;
      $dom->loadHtml($item);
      $src = simplexml_import_dom($dom)->xpath('//img/@src');
      if(!isset($src[0])) {
        return false;
      }
      $components = explode('photo/', $src[0]);            
        return end($components);          
    }, $feed['feed_image']);
    $allFeeds[$cnt]['feed_image'][$key] = array_filter($allFeeds[$cnt]['feed_image'][$key]);
  }
  $cnt++;
}

有人可以通过提供可靠有效的解决方案来帮助我吗?

提前致谢。

慢的

您的代码中有一些小错误,请参见以下调整:

$allFeeds = Array
(
    0 => Array
    (
        'feed_image' => Array
        (
            0 => '<a href="http://52.1.47.143/photo/928/2_onclick_ok/userid_244/"  class=" js_photo_item_928  photo_holder_image" rel="928" ><img src="http://52.1.47.143/file/pic/photo/2015/04/9bd387c6442135834298d6a17b3f9555_240.jpg"  alt=""  width="180"  height="160"  class="photo_holder" /></a><br />',
            1 => '<a href="http://52.1.47.143/photo/927/8/userid_244/" class=" js_photo_item_928  photo_holder_image" rel="927"><img src="http://52.1.47.143/file/pic/photo/2015/04/6eb60ee0e258223ef72a9a632d0ce429_240.png"  alt="" height="84" width="150"  class="photo_holder"  userid="244" /></a>',
            2 => 'No image, should be removed',
        )
    )
);

$cnt = 0;
foreach($allFeeds as $key => $value) {
  if(isset($allFeeds[$cnt]['feed_image']) && is_array($allFeeds[$cnt]['feed_image'])) {
    // $allFeeds[$cnt]['feed_image'][$key] = array_map(function($item) {
    $allFeeds[$cnt]['feed_image'] = array_map(function($item) {
      $dom = new DOMDocument;
      $dom->loadHtml($item);
      $src = simplexml_import_dom($dom)->xpath('//img/@src');
      if(!isset($src[0])) {
        return false;
      }
      $components = explode('photo/', $src[0]);
        return end($components);
      // }, $feed['feed_image']);
      }, $allFeeds[$cnt]['feed_image']);

      // $allFeeds[$cnt]['feed_image'][$key] = array_filter($allFeeds[$cnt]['feed_image'][$key]);
      $allFeeds[$cnt]['feed_image'] = array_filter($allFeeds[$cnt]['feed_image']);
  }
  $cnt++;
}

print_r($allFeeds);

输出:

Array
(
    [0] => Array
        (
            [feed_image] => Array
                (
                    [0] => 2015/04/9bd387c6442135834298d6a17b3f9555_240.jpg
                    [1] => 2015/04/6eb60ee0e258223ef72a9a632d0ce429_240.png
                )

        )

)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在以下情况下,为什么下拉列表不会根据从选择框中选择的值进行隐藏和显示?

来自分类Dev

为什么在以下情况下会发生StackOverflowError?

来自分类Dev

为什么在以下情况下我无法调用javascript AJAX函数?

来自分类Dev

为什么在以下情况下无法访问资源ID?

来自分类Dev

为什么在以下情况下,角度的时区无法按预期工作

来自分类Dev

在以下情况下,为什么对PHP脚本进行的AJAX调用中会多次显示成功警报消息?

来自分类Dev

在以下情况下具有“输入'->'的解析错误”

来自分类Dev

Teradata在以下情况下转换为Hive SQL

来自分类Dev

熊猫如何在以下情况下进行分组

来自分类Dev

为什么自然联接在以下情况下将输出设为空集?

来自分类Dev

为什么在以下情况下用于接口而不是类?

来自分类Dev

在以下情况下,为什么不需要对依赖类型使用typename?

来自分类Dev

为什么在以下情况下引发了不同类型的异常?

来自分类Dev

在以下情况下哪种数据库设计更好?为什么?

来自分类Dev

在以下情况下,为什么'var a = function(){}`与`function a(){}`类似?

来自分类Dev

为什么在以下情况下c ++会生成构造函数?

来自分类Dev

为什么在以下情况下用于接口而不是类?

来自分类Dev

为什么在以下情况下分配后结构地址不等于

来自分类Dev

在以下情况下如何创建关联数组?

来自分类Dev

在以下情况下如何操作数组?

来自分类Dev

在以下情况下如何更改数组?

来自分类Dev

在以下情况下如何获取数组的sizeof:

来自分类Dev

在以下情况下使用什么模式?

来自分类Dev

在以下情况下,什么是好的设计模式?

来自分类Dev

在以下情况下使用什么模式?

来自分类Dev

为什么在以下情况下执行json_decode()后出现空白屏幕,而不是等效的JSON对象数组?

来自分类Dev

字符串比较:为什么在以下情况下我们会有不同的输出

来自分类Dev

在以下情况下,在smarty中访问关联数组元素有什么问题?

来自分类Dev

为什么在无法进行类比较的情况下?

Related 相关文章

  1. 1

    在以下情况下,为什么下拉列表不会根据从选择框中选择的值进行隐藏和显示?

  2. 2

    为什么在以下情况下会发生StackOverflowError?

  3. 3

    为什么在以下情况下我无法调用javascript AJAX函数?

  4. 4

    为什么在以下情况下无法访问资源ID?

  5. 5

    为什么在以下情况下,角度的时区无法按预期工作

  6. 6

    在以下情况下,为什么对PHP脚本进行的AJAX调用中会多次显示成功警报消息?

  7. 7

    在以下情况下具有“输入'->'的解析错误”

  8. 8

    Teradata在以下情况下转换为Hive SQL

  9. 9

    熊猫如何在以下情况下进行分组

  10. 10

    为什么自然联接在以下情况下将输出设为空集?

  11. 11

    为什么在以下情况下用于接口而不是类?

  12. 12

    在以下情况下,为什么不需要对依赖类型使用typename?

  13. 13

    为什么在以下情况下引发了不同类型的异常?

  14. 14

    在以下情况下哪种数据库设计更好?为什么?

  15. 15

    在以下情况下,为什么'var a = function(){}`与`function a(){}`类似?

  16. 16

    为什么在以下情况下c ++会生成构造函数?

  17. 17

    为什么在以下情况下用于接口而不是类?

  18. 18

    为什么在以下情况下分配后结构地址不等于

  19. 19

    在以下情况下如何创建关联数组?

  20. 20

    在以下情况下如何操作数组?

  21. 21

    在以下情况下如何更改数组?

  22. 22

    在以下情况下如何获取数组的sizeof:

  23. 23

    在以下情况下使用什么模式?

  24. 24

    在以下情况下,什么是好的设计模式?

  25. 25

    在以下情况下使用什么模式?

  26. 26

    为什么在以下情况下执行json_decode()后出现空白屏幕,而不是等效的JSON对象数组?

  27. 27

    字符串比较:为什么在以下情况下我们会有不同的输出

  28. 28

    在以下情况下,在smarty中访问关联数组元素有什么问题?

  29. 29

    为什么在无法进行类比较的情况下?

热门标签

归档