|
|
|
| Добрый вечер.
Подскажите пожалуйста, возможно ли исправить в 10 файлах одновременно следующее?
Имеется: <title>Бесполезный текст</title> Нужно получить: <title>Книга <?php echo $title; ?></title> и вставить ниже:
$title="Программирование"; (нужно взять из тега strong)
Имеется: <strong>Программирование</strong> Нужно получить: <strong>Книга <?php echo $title; ?></strong>
|
| |
|
|
|
|
|
|
|
для: Незнайка
(22.08.2008 в 17:58)
| | В мощный редакторах типа HomeSite (мой любимый) есть функции batch replace. Там даже регулярными выражениями можно ругаться. | |
|
|
|
|
|
|
|
для: DDK
(22.08.2008 в 18:34)
| | Да, поддерживаю, и не только в 10, а включая у всех выбранных типов в паке, включая подпапки. | |
|
|
|
|
|
|
|
для: DDK
(22.08.2008 в 18:34)
| | Спасибо Всем.
А, как составить выражение, чтобы получилось, то, что мне нужно? Может, кто знает? | |
|
|
|
|
|
|
|
для: Незнайка
(22.08.2008 в 18:49)
| | В Вашем случае к регулярным выраженям приьегать не придётся, ибо заменяемый текст во всех файлах одинаковый (?). | |
|
|
|
|
|
|
|
для: DDK
(22.08.2008 в 19:58)
| | Извиняюсь. Забыл уточнить, что в каждом файле слова в теге strong разные :)
P.S. Если Вы чуть-чуть внимательнее посмотрите то обязательно заметите, что задача не из легких | |
|
|
|
|
|
|
|
для: Незнайка
(22.08.2008 в 20:36)
| | Элементарно решается.
напиши алгос и запусти - тут делов на 10 минут.
Могу лично для тебя набросать подобное... | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(22.08.2008 в 23:21)
| | Хорошо бы... | |
|
|
|
|
|
|
|
для: Незнайка
(23.08.2008 в 00:18)
| | Имеется: <title>Бесполезный текст</title>
Нужно получить: .......... ; Имеется ввиду - заменить?
<title>Книга <?php echo $title; ?></title>
и вставить ниже:
$title="Программирование"; (нужно взять из тега strong)
....... ; Заменить слово "Программирование" тем, что находится в strong?
Имеется:
<strong>Программирование</strong>
....... ; Но в слове strong у Вас тоже слово "Программирование"
Нужно получить: <strong>Книга <?php echo $title; ?></strong> ; Это вставить в strong?
================================
Можно файлик выложить для образца? | |
|
|
|
|
353 байт |
|
|
для: MAR_NIKOZA
(23.08.2008 в 00:37)
| | Прошу прощение за задержку, электричество кончилось :)
Файл имеет вид: А) ========> | |
|
|
|
|
408 байт |
|
|
для: MAR_NIKOZA
(23.08.2008 в 00:37)
| | Нужно получить вид: B) ========> | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(23.08.2008 в 00:37)
| | Повторюсь, что файлов (типа: А) несколько и слова в теге: strong разные. | |
|
|
|
|
|
|
|
для: Незнайка
(23.08.2008 в 12:09)
| | Не понял я Ваш образец, Незнайка.
Я понимаю так:
В файле есть тег
title
и есть тэг
strong
Нужно: Из тега strong взять содержимое и заменить этим содержимое в тэге title
При этом тэг strong остаётся без изменений. правильно?
Ладно, напишу общий авторедактор.
будет перелопачивать тысячи файлов за секунды.
Просто параметры Вам нужно будет самому задавать.
Значит задача - параметр strong вставлять впараметр title
Надеюсь, параметр strong в файле один.
Если их много, будет использоваться первый strong. | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(23.08.2008 в 12:30)
| | >>...Нужно: Из тега strong взять содержимое и заменить этим содержимое в тэге title
При этом тэг strong остаётся без изменений. правильно?
Вобщем то да, только еще нужно подставить во всех файлах в <title> Слово "Книга" потом содержимое тега strong </title>
>> Значит задача - параметр strong вставлять впараметр title
И удалять бесполезный текст из <title>
>>Надеюсь, параметр strong в файле один.
Верно, один | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(23.08.2008 в 12:30)
| | MAR_NIKOZA Вы случайно про меня не забыли?
>> Элементарно решается.
напиши алгос и запусти - тут делов на 10 минут.
Могу лично для тебя набросать подобное...
Я уже покушать успел, поспать и т.д.
P.S. Че-то похоже я Вас конкретно "загрузил". Да? | |
|
|
|
|
|
|
|
для: MAR_NIKOZA
(23.08.2008 в 12:30)
| | MAR Ау-ау, где Вы? MaaaaaaR ...
Ладно, чувствую я еще на луну успею сгонять:) | |
|
|
|
|
|
|
|
для: Незнайка
(22.08.2008 в 20:36)
| | Я пытался с помощью рег. выражений делать замену в HomeSite, но так и не понял как это правильно делать - замена происходит, но результат не всегда верный, можно сказать даже странный. В справке примеров не нашел, кроме как описания самих выражений, после попыток уже не делал. Есть еще программа, которая может делать замену в файлах с помощью рег. выражений, вроде бы как хвалят ее, называется вроде бы EmEditor. | |
|
|
|
|
|
|
|
для: sim5
(23.08.2008 в 15:11)
| | Понятно.
Сдается мне че-то я намудрил с этими: <?php echo $title; ?>
Как писал MAR_NIKOZA "Нужно: Из тега strong взять содержимое и заменить этим содержимое в тэге title
При этом тэг strong остаётся без изменений..."
Может без: <?php echo $title; ?> обойтись, как-то?
Или не получится? | |
|
|
|
|
|
|
|
для: Незнайка
(23.08.2008 в 15:37)
| | Я не имел ввиду именно вашу ситуацию, я вообще о замене с помошью рег. выражений в HomeSite - не получается как нужно, видимо что-то не так делал.
Что касается прямой замены, то тут бы проблем никаких бы не было, выделили:
<title>Какой-то текст</title>
указали заменить на:
<title>Книга <?php echo $title; ?></title>
и будет заменено именно на это, невзирая на <?$...?>. | |
|
|
|
|
|
|
|
для: sim5
(23.08.2008 в 15:48)
| | Ясно.
Если бы прямая замена, то конечно... | |
|
|
|
|
|
|
|
для: Незнайка
(23.08.2008 в 16:00)
| | Я тута. Только освободился - работал. Сейчас займусь. | |
|
|
|
|
|
|
|
для: Незнайка
(23.08.2008 в 16:00)
| | лучше не подстраиваться под всевозможные редакторы , а поставить "денвер",
и юзать скрипты, как например такой
<pre><?
$text = file_get_contents('57062-20080823115634.txt');
$text = preg_replace('#<title>([^<]*)(.+?<strong>)([^<]*)</strong>#s',
'<?php
\$title = \'$3\';
?>
<title><?php echo \$title ?>$2<?php echo \$title ?></strong>',
$text,
1 );
print htmlspecialchars($text);
?></pre>
|
и так-же легко можно сделать обход папок с файлами в которых нужно проделать такое
,,, и много чего ещё
UPD://
Всётаки лучще-бы звучало
>для пользователя "Незнайка"
хоть и больше байт | |
|
|
|
|
|
|
|
для: xx77
(23.08.2008 в 23:52)
| | Спасибо.
>> Всётаки лучще-бы звучало
>для пользователя "Незнайка"
Согласен, правда чем длиннее надпись перед тем кому написано тем больше отвлекает (приходится как бы все время читать "для пользователя" потом кому адресовано) на мой взгляд. А если бы например, было:
автор: Незнайка (23.08.2008 в 23:52)
Вам: xx77 (и тут бы небыло даты и врем. которые тоже отвлекают внимание)
Было бы коротко и ясно.
Что Вы об этом думаете? :) | |
|
|
|
|
|
|
|
для: xx77
(23.08.2008 в 23:52)
| | Работает. Спасибо.
>>,,, и много чего ещё
А можно ли сделать так, чтобы "пройтись" по всем всем файлам html "взять" из тега <strong > содержимое, поместив его в тег <title> (удалив содержимое тега <title>) и сохранить изменения в файлах? | |
|
|
|
|
|
|
|
для: Незнайка
(24.08.2008 в 13:05)
| | примерно похоже на это
, плюс настроить как Вам нужно создания резервных копий в целях безопасности
, и удаление их в случае ненадобности
<pre><?php
ini_set('max_execution_time', 0);
list($m, $time) = sscanf(microtime(), '0%s %s');
$time .= $m; # время начала выполнения
$search = '#<title>([^<]*)(.+?<strong>)([^<]*)</strong>#s';
# шаблон поиска
$repla = '<?php
\$title = \'$3\';
?>
<title><?php echo \$title ?>$2<?php echo \$title ?></strong>';
# строка замены
//замена частоприменяемым способеом обхода дерева каталогов при помощи рекурсивной функции
function RepFiles( $directory ) # функция
{
global $search, $repla;
$dir = opendir( $directory );
while($file = readdir($dir))
{
if (is_file($directory . '/' . $file) && substr($file, -5) == '.html') {
$txt = file_get_contents($directory . '/' . $file); # текст файла
@rename($directory . '/' . $file, $directory . '/' . $file . '.bak'); # переименование , создание резервных копий файлов
if (file_put_contents($directory . '/' . $file,
preg_replace($search, $repla, $txt))) echo $directory . '/' . $file . ' перезаписан<br>' . "\n"; # запись в файл.
else echo $directory . '/' . $file . ' <b> ошибка записи в файл</b>' . "\n";
} else if (is_dir($directory . '/' . $file) && ($file != ".") && ($file != "..")) {
RepFiles($directory . '/' . $file); #или рекурсия.
}
}
closedir( $dir ) ;
echo '<hr/>';
}
RepFiles( '.' ) ; # вызов функции замены во всех html-файлах в текущей и вложенных в неё дирректориях
list($m, $t) = sscanf(microtime(), '0%s %s');
print '<hr/>' . (($t .= $m) - $time) . "\n"; # время выполнения
?></pre>
|
не проверял, и требует прав доступа на запись в папку, если на хостинге,
и php5 , для file_put_contents() | |
|
|
|
|
|
|
|
для: xx77
(24.08.2008 в 19:51)
| | Спасибо.
А если у меня "Денвер", что-то нужно настраивать, нет? | |
|
|
|
|
|
|
|
для: xx77
(24.08.2008 в 19:51)
| | Что-то не получилось....
Правильно ли я делал?
Положил Ваш скрипт (назвав его: zamena.php) в папку (например): file и запустил.
В папке file имеются папки: file1, file2, file3 и т.п. в этих папках ( file1, file2, file3 и т.п.) лежат HTML документы: html1, html2, html3 и т.д.
Набрал в брауз.: http://localhost/file/zamena.php
В результате, полоски по всей стр. и запись в углу стр.: 2.1106197834
Что я делаю неправильно? | |
|
|
|
|
|
|
|
для: Незнайка
(24.08.2008 в 20:24)
| | просто проверяется условие substr($file, -5) == '.html'
и похоже на то что в папках не содержится не одного файла , с расширением html маленькими буквами
на денвере работает так как есть.
каждый разделитель - это один вызов функции, папка значит.
цифры - время работы скрипта в секундах
если не нужно проходить по вложенным папкам , закомментируйте часть функции
else if (is_dir($directory . '/' . $file) && ($file != ".") && ($file != "..")) {
RepFiles($directory . '/' . $file); #или рекурсия.
}
|
| |
|
|
|
|
|
|
|
для: xx77
(24.08.2008 в 22:16)
| | Действительно в папках не содержится не одного файла , с расширением html, зато имеется htm :)))
Я заменил на htm, но увы, результат тот же.... Может что-то еще нужно сделать?
if (is_file($directory . '/' . $file) && substr($file, -5) == '.htm') {
|
P.S. Кстати все htm файлы в папках имеют имя: default.htm, если это важно?.. | |
|
|
|
|
|
|
|
для: Незнайка
(25.08.2008 в 09:53)
| | Еще нужно понять код, перед тем как его [при]менять.
substr($file, -5) означает последние пять символов стоки $file
Вы сравниваете не '.html', а '.htm'? Угу? | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 09:56)
| | >>Еще нужно понять код, перед тем как его [при]менять.
С этим не поспоришь :)
Может подскажете, как и что нужно [при]менять, а то я сам че-то никак? | |
|
|
|
|
|
|
|
для: Незнайка
(25.08.2008 в 10:09)
| | Касательно менять - подсказал.
Во второй и третьей строках.
Касательно применять - увы. Может быть автор кода подскажет. | |
|
|
|
|
|
|
|
для: Trianon
(25.08.2008 в 10:16)
| | Спасибо :) | |
|
|
|
|
|
|
|
для: Незнайка
(25.08.2008 в 10:22)
| | Никто MAR_NIKOZA не видел? А то уже вторые сутки пошли, ни слуху, ни духу. Может случилось что?..
P.S. Если, кто встретит скажите незнайка искал :) | |
|
|
|