Первые две части: 0. о перфекционизме и проститутках 1. random image viewer- минифицируем код? эта будет третья. сейчас я уже минифицировал свой собственный код, но он работает не идеально. от вас ожидаются другие, инновационые решения и фикс моей проблемы рабочий вариант PHP: <?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); } нерабочий PHP: foreach(glob("files/*") as $page) file_put_contents($page, str_ireplace('Альтеа', 'Алтеа', file_get_contents($page))); Нерабочий не меняет вхождения типа: АЛЬТЕА</h1> Можно конечно сунуть вместо строк массив с двумя значениями, но мне хотелось бы понять, почему Ireplace реагирует на регистр
str_ireplace - Регситро-независимый вариант функции str_replace.. Ты бы нашел ошибку если бы разложил все по строкам..
Code: <?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: <?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 />'; Добавим до кучи короткий тег (<?) Итого мы имеем: PHP: <? foreach(glob('files/*') as $p) file_put_contents($p, str_ireplace('Альтеа', 'Алтеа', file_get_contents($p))); Итого, NOmeR1, ты предложил лишь фикс проблемы, являющийся неоптимизированной заплаткой. Полная минификация: скрипт для замены подстрок во всех указанных файлах. укладываемся в 107 байт, если учесть что исходная подстрока = 'текст1', а заменяющая - 'текст2' PHP: <?foreach(glob('files/*')as$p)file_put_contents($p,str_ireplace('текст1','текст2',file_get_contents($p)));
Дикс у меня проблемы с str_ireplace нету PHP: <? $data = "Альтеа АЛЬТЕА альтеа"; $data = str_ireplace('АЛЬТЕА', 'Алтеа', $data); die($data); ?> IMHO проверь настройки кодовой страницы, см. в строну setlocale()
Знаешь, наверно трудно тебе понять что это просто невероятно нелепо создавать такие темы и гордиться двумя строчками элементарного кода на 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%81+PHP