2015-02-05 3 views
0

Я ассоциативный массив под названием $data следующим образом:Как получить URL-адрес изображения из тега img, который присутствует как значение ключа в ассоциативном массиве?

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 
     ) 
) 

Как это получить? Пожалуйста, помогите мне.

ответ

1

попробовать это, его немного креповый, но он работает нормально

for ($i = 0; isset($data[$i]); $i++){ 
$temp = explode("\"", $data[$i]['profile_image']); 
$data[$i]['profile_image'] = $temp[1]; 
} 
1

попробовать что-то вроде этого:

//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); 
0

Ниже код будет создать новый массив и позволяют царапать содержимое любое значение из одного из вложенных массивов. То, что я написал, будет работать для случая, когда ваши теги 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); 
0

использовать класс DOCDocument:

foreach ($data as &$item) { 
    $doc = new DOMDocument(); 
    $doc->loadXML($item["profile_image"]); 
    $item["profile_image"] = $doc->documentElement->getAttribute("src"); 
} 

, таким образом, вы не зависит от детального формата вашей строки IMG, как, где ваш атрибут SRC является.

 Смежные вопросы

  • Нет связанных вопросов^_^