为什么数组转换和 HTML 解析的逻辑在以下情况下不起作用?
Why the logic for array conversion and HTML parsing is not working in following scenario?
我有一个名为 $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
)
)
)
我有一个名为 $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
)
)
)