Страшное название получилось.
Задача действительно типичная и детская. После постановки конкретной задачи ниже все станет понятно.
В закладки однозначно, ибо я уже который раз сталкиваюсь с подобным случаем и каждый раз приходится тратить время на написание детского скрипта.
Задача:
Имеется два списка. В моем случае это были список с названием характеристик инструмента и соответствующий ему список переменных, которые используются в механизме магазина, написанного на php (joomla, virtuemart).
Требуется вставить куски различного php-кода во множество файлов mvc-структуры. В этих кусках кода присутствует это соответствие.
Т.к. список совсем не маленький (около 50 наименований и это в начале) да умножить на 2 (т.к.идет соответствие), да минимум в 4-5 файлах используется различный но «монотонный» код, руками копипастить значит потратить минимум пол-дня на глупости.
Автоматизируем процесс ниже.
Куски списков:
Максимальная нагрузка
Расположение бачка
Материал, Материал бачка
Размер, L x H (мм)
Наружный диаметр
Внутренний диаметр, Ширина пропила
Присоединительная резьба (М)
Присоединительная резьба (F)
Присоединение к шлангу
Быстроразъемное соединение
…
И соответствующие характеристикам переменные:
roduct_p_maxpressure
product_p_location
product_p_material
product_p_size
product_p_diameterout
product_p_diameterin
product_p_threadm
product_p_threadf
product_p_hose
product_p_quickconnect
…
Смотрим на готовое решение:
file: pigmalion.php
<!DOCTYPE html>
<html>
<head>
<meta charset="cp-1251" /> <!-- or utf-8 -->
<title>Pigmalion bicycle</title>
</head>
<body>
<?php
$text_array = file("text.txt");
$text_tag_array = file("text-tag.txt");
$x=0;
while ($x++<147) { // 147 it's your number of rows
if ($x%2 == 0){
$strvar = 'row2'; // row2, row1 - your class for grid rows
}
else $strvar = 'row1';
$text_array[$x-1] = str_replace("\r\n","",$text_array[$x-1]);
$text_array[$x-1] = str_replace("\n","",$text_array[$x-1]);
$text_tag_array[$x-1] = str_replace("\r\n","",$text_tag_array[$x-1]);
$text_tag_array[$x-1] = str_replace("\n","",$text_tag_array[$x-1]);
echo "
<tr class=".$strvar.">
<td>
".$text_tag_array[$x-1]."
</td>
... your code...
<td>
".$text_array[$x-1]."
</td>
";
}
?>
</body>
</html>
Запускаем скрипт pigmalion.php через рабочий сервер, не жмуримся, когда на странице появляется непонятно-что, смотрим в исходник, созданной html-страницы, копируем, вставляем куда нам нужно готовые однотипные блоки, сопоставленные по нашим двум спискам.
Разбираем код(кому надо):
<!DOCTYPE html>
<html>
<head>
<meta charset="cp-1251" /> <!-- or utf-8 -->
<title>Pigmalion bicycle</title>
</head>
<body>
html-шапка. Момент с кодировкой не случайно выделил, если ваш сервер настроен «криво», то вам придется поиграться с кодировкой. Пусть это вас не пугает — вариации utf-8, cp-1251 плюс хороший редактор, умеющий переводить из одной кодировки в другую помогут.
$text_array = file("text.txt");
$text_tag_array = file("text-tag.txt");
функция file возвращает нам построчный массив из файла.
$x=0;
while ($x++<147) { // 147 it's your number of rows
if ($x%2 == 0){
$strvar = 'row2'; // row2, row1 - your class for grid rows
}
else $strvar = 'row1';
Да, 147 — это количество ваших строк. Это же количество строк в обоих списках.
Здесь присутствует заготовка для чередования названия класса при построении полосатой таблицы. $x%2 == 0 — остаток при делении на 2. В четном случае будет 0 (true) и соответственно наоборот. Ниже переменную $strvar подставляем в строки.
$text_array[$x-1] = str_replace("\r\n","",$text_array[$x-1]);
$text_array[$x-1] = str_replace("\n","",$text_array[$x-1]);
$text_tag_array[$x-1] = str_replace("\r\n","",$text_tag_array[$x-1]);
$text_tag_array[$x-1] = str_replace("\n","",$text_tag_array[$x-1]);
str_replace — удаляет все вариации конца строки как для win так и для *nix.
// Start copy-paste our code
echo "
<tr class=".$strvar.">
<td>
".$text_tag_array[$x-1]."
</td>
... your code...
<td>
".$text_array[$x-1]."
</td>
";
// End copy-paste our code
}
?>
</body>
</html>
Заметьте мы подставили class= $strvar, который будет поочередно меняться и давать нам полосатость в таблице.
Подставляем сопостовимые части $text_tag_array, $text_array из наших списков в требуемый код.
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.