Как получить URL изображения только из целого тега <img> в следующем сценарии?

0

У меня есть ассоциативный массив под названием $data следующим образом:

Array
(
    [0] => Array
        (
[student_image] => <img src="http://34.144.40.142/file/pic/photo/2015/02/02ff1a23db112db834b8f41748242bcb_240.png"  alt=""  width="180"  height="160"  class="photo_holder" />
)

    [1] => Array
        (
[student_image] => <img src="http://34.144.40.142/theme/frontend/foxplus/style/default/image/document/docx.png"  alt="" />
)
[2] => Array
        (
 [student_image] => <img src="http://34.144.40.142/file/pic/photo/2015/02/da46580276da5c3a31b75e8b31d35ddf_240.png"  alt=""  width="180"  height="160"  class="photo_holder" />
)
)

Фактический массив очень велик, здесь я ввел только необходимые данные из массива. Теперь, что я хочу, для каждого элемента массива ключ [student_image] должен получить только URL-адрес изображения, никакого тега imag и любых других данных. Короче говоря, я хочу получить следующий результат над массивом:

Array
(
    [0] => Array
        (
[student_image] => http://34.144.40.142/file/pic/photo/2015/02/02ff1a23db112db834b8f41748242bcb_240.png
)

    [1] => Array
        (
[student_image] => http://34.144.40.142/theme/frontend/foxplus/style/default/image/document/docx.png"
)
[2] => Array
        (
 [student_image] => http://34.144.40.142/file/pic/photo/2015/02/da46580276da5c3a31b75e8b31d35ddf_240.png
)
)

Как я могу достичь этого наилучшим образом и оптимальным образом для всех элементов массива $data?

Заранее спасибо.

Теги:
arrays
image
key-value
associative-array

2 ответа

0
Лучший ответ

попробуйте что-то вроде этого:

   //$data is your array
    $data = array_map(function($elem){
       //$elem is each elemet  of you array
       return array('student_image' => preg_replace('/<img\ssrc="([^"]+)".+$/','$1',$elem['student_image']));
    },$data);
  • 0
    Что здесь $ elem? Что я должен использовать в случае моего массива $ data? Можете ли вы импровизировать свой ответ, чтобы изменения вступили в силу с ключом [student_image] массива $ data?
  • 0
    хорошо, я изменю это на $ data - это ваш массив
Показать ещё 1 комментарий
0

Вы можете использовать регулярное выражение для извлечения URL-адресов

// $data is your existing array with img tags
$urls = array();
foreach ($data as $key => $value){
    foreach ($value as $key1 => $img) {
        preg_match('/<img[^>]*src="([^"]*)"[^>]*\/>/', $img, $srcmatch);
        $urls[$key][$key1] = $srcmatch[1];
    }
}
// now $urls is having only image url and have same structure of $data,
// You may replace $urls with $data
var_dump($urls);

Надеюсь это поможет.

  • 0
    Спасибо за ваш ответ, но нигде нет ссылки на ключ [student_image] в вашем коде. Не могли бы вы, пожалуйста, импровизировать свой ответ в соответствии с ключами [student_image] массива $ data?
  • 0
    у вас есть двумерный массив, так что вам нужен дополнительный цикл foreach для разбора. пожалуйста, посмотрите на измененный код.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню