Stasy11
@Stasy11
The best epta

Как сделать так чтобы скрипт выводил нужное кол-во картинок?

Есть вот такая вот строка кода:
$shortnews = $row['short_story'];
preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
foreach( $total[2] as $shortnews );
$tpl->set( '{imgbla}',$shortnews);

Я в php совсем плох но знаю что этот код выводит url картинки но только одной с названием "_1" в конце
Как сделать так чтоб он выводил все картинки а не только определенные?
На сколько я понял, это что-то шаманить нужно тут)
preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);

Заранее спасибо!
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@UndineS
Насколько понимаю задачу, нужно что-то типа этого:
preg_match_all( '#]*\ssrc=(?:\'|")(.+?\..+?)(?:\'|")[^>]*>#i',$shortnews,$total);

Регулярное выражение между решетками означает:
- ]* - в строке дальше могут идти какие-либо символы, кроме закрывающей угловой скобки;
- \s - идет пробельный символ (не только пробел, но и его вариации - короткий, длинный; табуляция, перенос строки и т. д.);
- src= - идет последовательность символов "src=";
- (?:\'|") - идет двойная или одинарная кавычка; скобками означаем границы для знака ИЛИ (вертикальная черта), а символы "?:" означают, что этот скобочный набор не надо отправлять в итоговый массив $total;
- (.+?\..+?) - идет ЧТО-ТО, точка, потом еще ЧТО-ТО (точка означает "любой символ", плюс - что он идет один и более раз, а "+?" - что ищем минимальный подходящий набор, т.е. при нахождении точки (обозначена символом "\.", т.е. ищем именно символ точки, а не "любой символ") первая группа символов ".+?" заканчивается, после точки ищется еще одна);
- (?:\'|") - снова одинарная/двойная кавычка;
- [^>]* - от 0 до бесконечности символов, кроме закрывающей скобки
- > - закрывающая скобка.
символ "i" после решетки означает регистронезависимость.

По итогу в массив $total будут попадать все теги , где элемент с номером "1" - это урл картинки. Т.е.:
- $total[0][0] - полное совпадение с шаблоном, весь тег ;
- $total[0][1] - совпадение с маской в скобках, непосредственно урл картинки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Такой вариант выведет 10 картинок (см. третий аргумент функции array_slice()):
foreach( array_slice($total[2], 0, 10) as $shortnews )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы