Выборочное изменение результатов вывода цикла

Fellix

Новичок
Здравствуйте.

Есть цикл, который выводит миниатюры изображений, со всеми названиями и остальными данными.
Как изменить первые несколько имен в результах вывода по своему шаблону?
Все имена содержат /.+ - 01/ - можно за это зацепиться.

Возможно вообще такую перезапись реализовать в цикле?

Мои знания оставляют желать лучшего, очень буду признателен за подсказку.

ps- если можно без ссылок на изучение основ, не грозит мне уже стать великим программистом )))
 

rotoZOOM

ACM maniac
Да, такое возможно.
А какие возникают трудности? Что именно не понятно?
 

Fellix

Новичок
Одну - без проблем:

PHP:
$string=$row->imgtitle;
$pattern ='/.+ - 01/';
$replace = 'фото '.$string;
echo preg_replace($pattern, $replace, $string);
Получаю то что мне надо. Но стоит по этому типу прописать для второго имени, перезаписываются все, где-то что-то недопонимаю).
То есть мне бы теоретически понять как реализовать. Не прошу дать код чтоб скопипастить))

Задача - по таким шаблонам: - 'фото '.$string; - $string.' фото'; - перезаписать первых несколько имён из объекта $row
 

Фанат

oncle terrible
Команда форума
все? а у тебя есть эти "все"? или же только одна, которая и перезаписывается?
 

Fellix

Новичок
Вот о чем я и думаю.
Получается надо сначала разобрать объект на составляющие, перезаписать там, а потом уже пускать в цикл?
 

WMix

герр M:)ller
Партнер клуба
может print_r($row) поможет
или всеже $string нужно в array пихать?
 

Fellix

Новичок
А чем мне print_r($row) поможет?
Что в $row известно.
Нужно выборочно на выходе из цикла перезаписать $row->imgtitle; по моему шаблону, для первых двух или трех результатов вывода цикла for
 

Fellix

Новичок
все? а у тебя есть эти "все"? или же только одна, которая и перезаписывается?
Есть все. Меняю маску, перезаписывается нужное.
PHP:
$pattern ='/.+ - 02/';
$replace = 'фото '.$row->imgtitle;
echo preg_replace($pattern, $replace, $row->imgtitle);
То есть это работает. Но как прописать больше чем для одного имени?
 

Fellix

Новичок
Спасибо всем за помощь :)
Может пригодится кому -

PHP:
$pattern = array();
$patterns[0] = '/.+ - 01/';
$patterns[1] = '/.+ - 02/';
$patterns[2] = '/.+ - 03/';
$patterns[3] = '/.+ - 04/';
$replace = array(); 
$replacements[0] = 'Фото '.substr($row->imgtitle, 0, -9);
$replacements[1] = substr($row->imgtitle, 0, -5).' фото';
$replacements[2] = 'Фотографии '.substr($row->imgtitle, 0, -5);
$replacements[3] = substr($row->imgtitle, 0, -9).' фотографии';
echo preg_replace($patterns, $replacements, $row->imgtitle);
 

Фанат

oncle terrible
Команда форума
всё-таки в цикле ниасилил :)

кстати, тебе этот код где написали?
 

Fellix

Новичок
Посоветуйте, от чего оттолкнуться, чтоб выводить $row->imgtitle только где прописана маска, а остальные $row->imgtitle вообще не выводить?
 

Фанат

oncle terrible
Команда форума
вообще-то, в общем случае ту информацию, которая не выводится, просто не запрашивают из базы
 

Fellix

Новичок
Тут наверно не та ситуация. Например у меня в категории 40 фото и thumb-ы выводятся циклом на страницу все, по-любому.
Надо бы какое-то условие, чтоб тайтлы к миниатюрам выводить только те, которые перезаписаны кодом выше.
А остальные не выводить, чтоб остались голые миниатюры.
 

Фанат

oncle terrible
Команда форума
переделать всё-таки, на цикл, использовать preg_match и по результатам выводить или не выводить
шаблон [1-4] в регулярке соответствует цифрам от 1 до 4 включительно
 

Фанат

oncle terrible
Команда форума
когда вопрос задают без единой строчки кода, при этом не понимая, чего хотят и как это должно выглядеть, ответить бывает весьма затруднительно.
 

Fellix

Новичок
PHP:
<?php      
      $count_pics = count($this->images);
      $column = $this->_config->get('jg_colnumb');
      $num_rows = ceil($count_pics / $column);
      $index = 0;
      $this->i = 0;
      for($row_count = 0; $row_count < $num_rows; $row_count++): ?>
	  
<div class="imgbox">

<?php 
      for($col_count = 0; ($col_count < $column) && ($index < $count_pics); $col_count++):
      $row = $this->images[$index]; ?>

<div>вывод миниатюры изображения</div>

<?php 
    $pattern = array();
    $patterns[0] = '/.+ - 01/';
    $patterns[1] = '/.+ - 02/';
    $patterns[2] = '/.+ - 03/';
    $patterns[3] = '/.+ - 04/';
    $replace = array(); 
    $replacements[0] = 'Фото '.substr($row->imgtitle, 0, -9);
    $replacements[1] = substr($row->imgtitle, 0, -5).' фото';
    $replacements[2] = 'Фотографии '.substr($row->imgtitle, 0, -5);
    $replacements[3] = substr($row->imgtitle, 0, -9).' фотографии';
	
    $imgtitle = preg_replace($patterns, $replacements, $row->imgtitle);
?>
	  
<div><?php echo $imgtitle //вывод тайтла фото?></div>

<?php $index++; endfor; ?>
</div>	 
<?php $index++; endfor; ?>
 
Сверху