Тема: counters
Показать сообщение отдельно
Старый 18.07.2002, 00:46
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 4  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
В таком случае ябы посоветовал тебе юзать preg_replace_callback (mixed pattern, mixed callback, mixed subject [, int limit);

Фишка вот в чем : вместо обыкновенного replac-a preg_replace_callback заменяетсвой стринг на то что возвращает функция [имя которой] ты пишеш во втором аргументе.

Получается следующие :
PHP код:
<?

$max 
5;
$counter 0;
$replaces = array ("strochka" => "string","nice" => "stupid");

$in "Here goes my strochka ... Very nice strochka. I want to replace my strochka. It will be a nicer strochka";
// Вызываем preg_replace_callback 
$out preg_replace_callback ("(strochka|nice)""callback_function"$in);

/*
preg_replace_callback в свою очередь вызывает функцию callback_function которую ты заранее определил.
*/

function callback_function ($matches) {
global 
$counter$max$replaces$in;
    if (
$counter $max) {
        
// То что должно случится когда количество совпадений перевалило за макксимум. Например : $exit = true; и (!!!) , 
        // всю твою строку приравниваешь ошибке. 
        
$in "Eror !?!";
        
$error true;
    }
    
$counter++;
    
// На худой конец
    
if ($error) return "";
    
// Для нормальной расклаки
    
return ($replaces[$matches[0]]);
}

echo 
$out;

?>