Всем доброй ночи.
Имеется такой html код:
<div class="test" title="Подсказка"><span><img src="/images.png" alt="картинка"></span><span>Текст</span></div>
Таких строк есть порядка 800 штук (все они однотипны) меняется только "Подсказка", "/images.png" и "Текст"
Сейчас возникла необходимость изменить структуру, на такую:
<div class="test"><span>#1</span><span><img src="/images.png" alt="картинка"></span><span>Текст</span><span>Подсказка</span></div>
Возможно ли это сделать на автомате? или придется все переделывать ручками?
Я так понял, что #1
- это итерационный элемент, т.е. для него нужно в каждом последующем случае делать +1.
Написал вам скрипт, где некий файл file.html (вы можете самостоятельно изменить название файла) приводится к нужной вам структуре и сохраняется в файл fileNew.html . Для того, чтобы запустить скрипт, нужно, чтобы у вас был установлен пхп, далее вам нужно в папку где содержится этот file.html поместить этот скрипт (к примеру, создать файл php.php) и запустить его (например, вызвать через браузер адрес типа: http://ваш_сайт.ру/папка_где_лежит_хтмл/php.php
.
<?php
$file = __DIR__.'/file.html';
$text = file_get_contents($file);
$pattern = '/<div class="test" title="([^"]+)"><span>(<img [^>]+>)<\/span><span>(.*?)<\/span><\/div>/imsu';
$_GET['i'] = 0;
$textNew = preg_replace_callback($pattern, 'myReplace', $text);
function myReplace($matches) {
$_GET['i']++;
return '<div class="test"><span>#'.$_GET['i'].'</span><span>'.$matches[2].'</span><span>'.$matches[3].'</span><span>'.$matches[1].'</span></div>';
}
$fileNew = __DIR__.'/fileNew.html';
file_put_contents($fileNew, $textNew);
В общем случае есть два варианта, как вы можете попробовать сделать это, и оба они будут зависеть от того, каким редактором вы пользуетесь. Я бы посоветовал использовать либо notepad++, либо PHPStorm, во втором случае это уже не просто текстовый редактор, а полноценная IDE (Integrated Development Environment, Интегрированная среда разработки). Либо любой другой редактор, поддерживающий замену текста и/или мультикурсор.
Первый вариант: использовать замену текста, например в notepad++ она вызывается по Ctrl+H, и последовательно заменить все блоки в коде, например первым делом можно поменять <div class="test" title="Подсказка"><span>
на <div class="test"><span>
.
Но в этом варианте у вас не получится к примеру сделать автоматически нумерацию (цифры после #), только лишь сделать новую структуру кода.
Второй вариант: использовать мультикурсор. Прочитать про него подробнее в случае PHPStorm можно здесь, а в случае с np++ делается это так:
Первым делом эту функцию нужно активировать, в русской версии это делается по такому пути: Опции / Настройки / Правка / Мультиредактирование. Далее с помощью либо функции замены текста, либо самой функции мультикурсора видоизменяете структуру кода, в вашем случае я бы посоветовал использовать замену. И потом делаете нумерацию следующим образом. Выделяете тот кусок текста, после которого должна стоять увеличивающаяся цифра и нажимаете Alt+C, в результате вы увидите окно, где будет два варианта работы, либо "текст для вставки", либо "числа для вставки". Вам нужно будет настроить все вот так:
Обратите внимание, что цифры будут вставляться там, где у вас расположен курсор во время выделения текста. После чего нажимаете ОК и получаете уже такой текст:
Это если вы оставили курсор справа от #. Если вы оставите курсор с левой стороны, то получите такую картину, не запутайтесь:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хочу подключить webmoney для пополнения баланса на своем сайте, но не знаю какой интерфейс нуженИ структура api webmoney тоже не понятно
Пытаюсь в теме поменять название корзины на главной страницеПри обновлении на доли секунды меняется на мою версию
Добрый деньПолучаю через php-imap список папок на сервере, и получаю список всех писем без привязки к папке