[help]: RegExp для удаления всех символов в нутри определённого тега

Статус
В этой теме нельзя размещать новые ответы.

zloba00

Мастер
Регистрация
28 Окт 2008
Сообщения
247
Реакции
34
Есть около 2 миллионов файлов :), нужно в каждом из них удалить всё что находиться между тегами <script>random code goes here</script>. Для простых модификаций текста при помощи regexp я использую EditPlus. Какой regexp для этого использовать? Чем лучше это реализовать? Желательно, чтобы _это_ могло залогиниться по FTP и шерстить там :yahoo:. Ну это в идеале. А так буду благодарен любой помощи, хотя бы если бы указали, какой RegExp использовать.
 
Код:
$html = file_get_contents ( $file );
$html = preg_replace ( "'<script>(.+?)</script>'si", '', $html );
file_put_contents ( $file, $html );
 
Благодарствую, но в локальном редакторе editPlus данный regexp - <script>(.+?)</script> - работать отказался :confused: ... может кто подскажет какой он должен быть.
 
Код:
$html = file_get_contents ( $file );
$html = preg_replace ( "'<script>(.+?)</script>'si", '', $html );
file_put_contents ( $file, $html );
У меня так и не получилось заставить скрипт заработать, т.е. подсунуть в корень папки с файлами на сервере и запустить. В PHP я не силен. Не мог бы ты показать полный код скрипта в работоспособном виде? И не понятно вот еще что: он пробежит по всем html файлам в паке ... ? Вообщем внесите ясность :confused:
 
товарищ, учите PHP
PHP:
$file = dirname(__FILE__) . '/file.html'; // Вместо /file.html введите свой путь к файлу (относительный папки, из которой запускается скрипт)
$html = file_get_contents($file);
$html = preg_replace("'<script>(.+?)</script>'si", '', $html);
file_put_contents($file, $html);
 
обрабатывает все файлы *.html
в текущем каталоге
PHP:
$dir = dirname(__FILE__);
$files=glob("{$dir}/*.html");
foreach($files as $file){
	echo "Convert: {$file}\n";
	$html = file_get_contents($file);
	$html = preg_replace("'<script>(.+?)<\/script>'si","", $html);
	file_put_contents($file, $html); 
	// вместо, file_put_contents не везде работает
	/*
	$h=fopen($file,'w+');
	if ($h){
		@fwrite($h,$html);
		@fclose($h);
	}
	*/ 
	unset($html);
}
 
Тогда надо еще учесть пробелы в закрывающем теге </script\s*>
 
Если есть перл - можно из шела запустить такой скрипт:
perl -pi -w -e 's/<script[^>]+>(.+?)<\/script\s*>//msig;' *.htm

Удалит все теги из файлов *.htm
Если надо другой тип файлов, или все файлы - просто изменить соответственно маску
 
вот то что я искал, подсказали на nabble! :ay: <script>[^>]*</script> работает в editPlus на localhoste скорость обработки около 500 страниц в минуту, то что надо. :yahoo:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху