У меня есть ассоциативный массив под названием $data
следующее :
Array
(
[0] => Array
(
[item_id] => 170
[item_title] => Master of Engineering
[item_time_stamp] => 1421152531
[item_user_id] => 244
[item_type_id] => pages
[item_photo] => 169
[profile_image] => <img src="http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg" alt="" width="50" height="50" />
)
[1] => Array
(
[item_id] => 169
[item_title] => SF
[item_time_stamp] => 1421063963
[item_user_id] => 901
[item_type_id] => pages
[profile_image] => <img src="http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg" alt="" width="50" height="50" />
)
)
Теперь я хочу получить только URL изображения в ключе [profile_image]
, Конечный результирующий массив должен выглядеть следующим образом:
Array
(
[0] => Array
(
[item_id] => 170
[item_title] => Master of Engineering
[item_time_stamp] => 1421152531
[item_user_id] => 244
[item_type_id] => pages
[item_photo] => 169
[profile_image] => http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg
)
[1] => Array
(
[item_id] => 169
[item_title] => SF
[item_time_stamp] => 1421063963
[item_user_id] => 901
[item_type_id] => pages
[profile_image] => http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg
)
)
Как я должен получить это? Пожалуйста, помогите мне.
попробуйте что-то вроде этого:
//to test
$data = array(
array(
'profile_image'=>'<img src="http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg" alt="" width="50" height="50" />'
),
array(
'profile_image'=>'<img src="http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg" alt="" width="50" height="50" />'
)
);
function fixdata($data){
$fix = function($url){
$patt = "/h\S*.jpg|.gif|.png/";
preg_match($patt,$url,$match);
return (empty($match[0]))?$url:$match[0];
};
foreach($data as $key=>$value){
$data[$key]['profile_image'] = $fix($value['profile_image']);
}
return $data;
}
var_dump($data);
$newdata = fixdata($data);
var_dump($newdata);
попробуйте это, это немного дерьмо, но это работает нормально
for ($i = 0; isset($data[$i]); $i++){
$temp = explode("\"", $data[$i]['profile_image']);
$data[$i]['profile_image'] = $temp[1];
}
Приведенный ниже код создаст новый массив и позволит вам извлечь содержимое любого значения из одного из вложенных массивов. То, что я написал, будет работать для случая, когда ваши теги img всегда имеют одинаковый формат, однако, если вы столкнетесь с ситуацией, когда у вас есть разные форматы, вы можете изменить область, в которой код очищает тег, чтобы перестроить URL с помощью минимальные усилия
$mainArray = array(
array(
'item_id' => 170,
'item_title' => 'Master of Engineering',
'item_time_stamp' => 1421152531,
'item_user_id' => 244,
'item_type_id' => 'pages',
'item_photo' => 169,
'profile_image' => '<img src="http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg" alt="" width="50" height="50" />'
),
array(
'item_id' => 169,
'item_title' => 'SF',
'item_time_stamp' => 1421063963,
'item_user_id' => 901,
'item_type_id' => 'pages',
'item_photo' => 169,
'profile_image' => '<img src="http://54.174.50.242/theme/frontend/foxplus/style/default/image/pages/category_169.jpg" alt="" width="50" height="50" />'
)
);$newArray = array();
foreach($mainArray as $innerArray){$newInnerArray = array();
foreach($innerArray as $key => $val){
if($key !== 'profile_image'){
$newInnerArray[$key] = $val;
} else {
//Scrape the url here
$link = strstr($val, '"');
$link = strstr($link, ' alt', TRUE);
$link = str_replace('"', '', $link);
$link = str_replace(' ', '', $link);
$newInnerArray[$key] = $link;
}
}
$newArray[] = $newInnerArray;
}
echo '<pre>';
echo var_export($newArray, TRUE);
используйте класс DOCDocument:
foreach ($data as &$item) {
$doc = new DOMDocument();
$doc->loadXML($item["profile_image"]);
$item["profile_image"] = $doc->documentElement->getAttribute("src");
}
таким образом, вы не зависите от подробного формата вашей строки IMG, например, где находится ваш атрибут src.