ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Минификация кода 3: замена текста по всех файлах
  #1  
Старый 08.08.2008, 09:49
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию Минификация кода 3: замена текста по всех файлах

Первые две части:

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($pagestr_ireplace('Альтеа''Алтеа'file_get_contents($page))); 
Нерабочий не меняет вхождения типа:
АЛЬТЕА</h1>

Можно конечно сунуть вместо строк массив с двумя значениями, но мне хотелось бы понять, почему Ireplace реагирует на регистр

Последний раз редактировалось Дикс; 08.08.2008 в 09:51..
 
Ответить с цитированием

  #2  
Старый 08.08.2008, 10:38
Аватар для Isis
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

str_ireplace - Регситро-независимый вариант функции str_replace..
Ты бы нашел ошибку если бы разложил все по строкам..
 
Ответить с цитированием

  #3  
Старый 08.08.2008, 12:10
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Цитата:
хотелось бы понять, почему ireplace реагирует на регистр
..
 
Ответить с цитированием

  #4  
Старый 08.08.2008, 12:43
Аватар для NOmeR1
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Код:
<?php
$pages=glob('files/*');
foreach($pages as $page)
	if(!strpos($page, 'index.php'))
		file_put_contents($page, preg_replace('~(?<=ал)ь(?=теа)~i', '', file_get_contents($page)));
Только убирает мягкий знак.
 
Ответить с цитированием

  #5  
Старый 08.08.2008, 13:22
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

Гуд. Но регулярка в цикле для каждого из 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 $pfile_put_contents($pstr_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)));
 
Ответить с цитированием

  #6  
Старый 08.08.2008, 14:14
Аватар для life96
life96
Познающий
Регистрация: 09.04.2008
Сообщений: 51
Провел на форуме:
147993

Репутация: 74
По умолчанию

Дикс у меня проблемы с str_ireplace нету
PHP код:
<?
  $data 
"Альтеа АЛЬТЕА альтеа";
  
$data str_ireplace('АЛЬТЕА''Алтеа'$data); 
  die(
$data);
?>
Цитата:
Алтеа Алтеа Алтеа
IMHO проверь настройки кодовой страницы, см. в строну setlocale()
 
Ответить с цитированием

  #7  
Старый 08.08.2008, 21:20
Аватар для Пиотр Тотамович
Пиотр Тотамович
Новичок
Регистрация: 08.08.2008
Сообщений: 6
Провел на форуме:
13036

Репутация: 20
По умолчанию

Цитата:
Сообщение от Дикс  
Первые две части:

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($pagestr_ireplace('Альтеа''Алтеа'file_get_contents($page))); 
Нерабочий не меняет вхождения типа:
АЛЬТЕА</h1>

Можно конечно сунуть вместо строк массив с двумя значениями, но мне хотелось бы понять, почему Ireplace реагирует на регистр
Знаешь, наверно трудно тебе понять что это просто невероятно нелепо создавать такие темы и гордиться двумя строчками элементарного кода на php. Поэтому даю простую рекомендацию. Скачай исходный код любого опенсурсного проекта (apache например или php да что угодно). Найди там какой-нибудь файл с исходным кодом размером эдак мегабайт или по-больше. Открой его. И долго втыкай, пока твоя самооценка не опустится до уровня Земного ядра. Потом закрой, удали нафиг этот код и больше не создавай таких тем...
 
Ответить с цитированием

  #8  
Старый 09.08.2008, 07:44
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

если тебе неприятно читать подобные темы, то просто их не открывай. лично я тебе прочтение этого не навязывал.
а мне интересно пообщаться с людьми, которых тоже это интересует и узнать что-то новое.
 
Ответить с цитированием

  #9  
Старый 10.08.2008, 07:51
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

насчёт str_ireplace я кажется понял:
у меня было 124 html-файла.
в большинстве из них кодировка utf-8, но были и файлы в iso-8859-1
вероятно поэтому для них не срабатывала замена.
интересно, можно как-то получить контент в нужной кодировке? или для этого надо функцию писать (mbstring?)
 
Ответить с цитированием

  #10  
Старый 10.08.2008, 12:57
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Цитата:
Найди там какой-нибудь файл с исходным кодом размером эдак мегабайт или по-больше. Открой его.
Ты случайно не попутал исходник с фоткой в формате Bmp? ))

Хотя общий ход мыслей поддерживаю, стоит посмотреть на чужие проекты. И почитать книжки хорошие. По пхп советую Гутманса(для начала), один из разработчиков PHP.


google.com/search?q=%D0%B3%D1%83%D1%82%D0%BC%D0%B0%D0%BD%D1%8 1+PHP

Последний раз редактировалось nerezus; 10.08.2008 в 13:08..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всех студентов, и всех Татьян с праздником! SladerNon Болталка 22 26.01.2008 00:52
секреты и коды для сотовых телефонов ))) dinar_007 Сотовый фрикинг 32 05.08.2006 17:06
Внедрение Sql кода с завязанными глазами k00p3r Чужие Статьи 0 12.06.2005 20:48
Внедрение Sql кода с завязанными глазами, часть 2 k00p3r Чужие Статьи 0 12.06.2005 20:45



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ