Просмотр полной версии : Минификация кода 3: замена текста по всех файлах
Первые две части:
0. о перфекционизме и проститутках (https://forum.antichat.ru/thread76751.html)
1. random image viewer- минифицируем код? (https://forum.antichat.ru/thread79405.html)
эта будет третья.
сейчас я уже минифицировал свой собственный код, но он работает не идеально.
от вас ожидаются другие, инновационые решения и фикс моей проблемы :)
рабочий вариант
<?php
$pages = glob("files/*");
foreach($pages as $page)
if(!substr_count((string)$page, 'index.php')){
$data = file_get_contents($page);
$data = str_ireplace('АЛЬТЕА', 'Алтеа', $data);
$data = str_ireplace('Альтеа', 'Алтеа', $data);
file_put_contents($page, $data);
}
нерабочий
foreach(glob("files/*") as $page)
file_put_contents($page, str_ireplace('Альтеа', 'Алтеа', file_get_contents($page)));
Нерабочий не меняет вхождения типа:
АЛЬТЕА</h1>
Можно конечно сунуть вместо строк массив с двумя значениями, но мне хотелось бы понять, почему Ireplace реагирует на регистр
str_ireplace - Регситро-независимый вариант функции str_replace..
Ты бы нашел ошибку если бы разложил все по строкам..
хотелось бы понять, почему ireplace реагирует на регистр
..
<?php
$pages=glob('files/*');
foreach($pages as $page)
if(!strpos($page, 'index.php'))
file_put_contents($page, preg_replace('~(?<=ал)ь(?=теа)~i', '', file_get_contents($page)));
Только убирает мягкий знак.
Гуд. Но регулярка в цикле для каждого из 124 html-файлов (что я делал в реале) - не лучший метод.
Более правильно всё-таки понять, почему str_ireplace не реагировала на регистр.
Потом проверку на индекс не надо - он не лежит в папке files и не попадает под маску glob
И glob я считаю можно вставить в foreach. Он не выполняется при каждой итерации, что подтверждает следующий тестовый скрипт:
<?php
function iglob(){
global $cnt;
$arr = array('file1','file2','file3');
$cnt++;
return $arr;
}
$test = iglob();
foreach ($test as $r){
echo $r.'<br />';
}
echo '<br />cnt is '.$cnt.'<br />';
$cnt = 0;
foreach (iglob() as $r){
echo $r.'<br />';
}
echo '<br />cnt is '.$cnt.'<br />';
Добавим до кучи короткий тег (<?)
Итого мы имеем:
<? foreach(glob('files/*') as $p) file_put_contents($p, str_ireplace('Альтеа', 'Алтеа', file_get_contents($p)));
Итого, NOmeR1, ты предложил лишь фикс проблемы, являющийся неоптимизированной заплаткой.
Полная минификация:
скрипт для замены подстрок во всех указанных файлах.
укладываемся в 107 байт, если учесть что исходная подстрока = 'текст1', а заменяющая - 'текст2'
<?foreach(glob('files/*')as$p)file_put_contents($p,str_ireplace('тек т1','текст2',file_get_contents($p)));
Дикс у меня проблемы с str_ireplace нету
<?
$data = "Альтеа АЛЬТЕА альтеа";
$data = str_ireplace('АЛЬТЕА', 'Алтеа', $data);
die($data);
?>
Алтеа Алтеа Алтеа
IMHO проверь настройки кодовой страницы, см. в строну setlocale()
Пиотр Тотамович
08.08.2008, 21:20
Первые две части:
0. о перфекционизме и проститутках (https://forum.antichat.ru/thread76751.html)
1. random image viewer- минифицируем код? (https://forum.antichat.ru/thread79405.html)
эта будет третья.
сейчас я уже минифицировал свой собственный код, но он работает не идеально.
от вас ожидаются другие, инновационые решения и фикс моей проблемы :)
рабочий вариант
<?php
$pages = glob("files/*");
foreach($pages as $page)
if(!substr_count((string)$page, 'index.php')){
$data = file_get_contents($page);
$data = str_ireplace('АЛЬТЕА', 'Алтеа', $data);
$data = str_ireplace('Альтеа', 'Алтеа', $data);
file_put_contents($page, $data);
}
нерабочий
foreach(glob("files/*") as $page)
file_put_contents($page, str_ireplace('Альтеа', 'Алтеа', file_get_contents($page)));
Нерабочий не меняет вхождения типа:
АЛЬТЕА</h1>
Можно конечно сунуть вместо строк массив с двумя значениями, но мне хотелось бы понять, почему Ireplace реагирует на регистр
Знаешь, наверно трудно тебе понять что это просто невероятно нелепо создавать такие темы и гордиться двумя строчками элементарного кода на php. Поэтому даю простую рекомендацию. Скачай исходный код любого опенсурсного проекта (apache например или php да что угодно). Найди там какой-нибудь файл с исходным кодом размером эдак мегабайт или по-больше. Открой его. И долго втыкай, пока твоя самооценка не опустится до уровня Земного ядра. Потом закрой, удали нафиг этот код и больше не создавай таких тем...
если тебе неприятно читать подобные темы, то просто их не открывай. лично я тебе прочтение этого не навязывал.
а мне интересно пообщаться с людьми, которых тоже это интересует и узнать что-то новое.
насчёт str_ireplace я кажется понял:
у меня было 124 html-файла.
в большинстве из них кодировка utf-8, но были и файлы в iso-8859-1
вероятно поэтому для них не срабатывала замена.
интересно, можно как-то получить контент в нужной кодировке? или для этого надо функцию писать (mbstring?)
Найди там какой-нибудь файл с исходным кодом размером эдак мегабайт или по-больше. Открой его. Ты случайно не попутал исходник с фоткой в формате Bmp? ))
Хотя общий ход мыслей поддерживаю, стоит посмотреть на чужие проекты. И почитать книжки хорошие. По пхп советую Гутманса(для начала), один из разработчиков PHP.
google.com/search?q=%D0%B3%D1%83%D1%82%D0%BC%D0%B0%D0%BD%D1%8 1+PHP
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot