Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 17.07.2002, 19:35
Gandalf вне форума Посмотреть профиль Отправить личное сообщение для Gandalf Найти все сообщения от Gandalf
  № 1  
Gandalf

Регистрация: Jul 2000
Адрес: Kitchener/Canada
Сообщений: 114
Отправить сообщение для Gandalf с помощью ICQ
Question counters

hi ,
problemma takogo roda ..... ispol'zuu regular expressions (preg_replace();)
ix neskol'ko podrjad ......... 15-20
kak mne uznat' skol'ko raz VSEGO (t.e. vse oni vmeste) sdelali zameni ??????

t.e.
$code="asdqwefghzxcvbnrtyfghasdqwe";
$code=preg_replace("'asd'is","qwe",$code);
$code=preg_replace("'zxc'is","vbn",$code);
$code=preg_replace("'dfg'is","ert",$code);
$code=preg_replace("'yui'is","hjk",$code);
mna nado sdelt' ne bolle N kolichestva zamen , kak ??????!

reshenie kak
//
$s=array ("my regular");
$r=array("my replacment");
$code=preg_replace($s,$r,$code);
//
ne podxodit.!
__________________
always confused

Старый 17.07.2002, 22:18
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 2  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Pochemu ne podhoidit? V smisle - ne furichit ili iz principa?

Potomu-chto vishenapisanoye preg ($array_patterns, $array_replaces, $input) dolzno rabotat...

Yesho mozno sdelat tak

<?
function reps ($_) {

$pats = array ("pat0", "pat1");
$reps = array ("rep0", "rep1");
$i = 0;

foreach ($patterns as $pat) {
$_ .= ereg_replace ($pat, $reps[$i++], $_);
}

return ($_);
}
?>

Старый 18.07.2002, 00:06
Gandalf вне форума Посмотреть профиль Отправить личное сообщение для Gandalf Найти все сообщения от Gandalf
  № 3  
Gandalf

Регистрация: Jul 2000
Адрес: Kitchener/Canada
Сообщений: 114
Отправить сообщение для Gandalf с помощью ICQ
лады ... , я просто плохо указал мою проблему !
масивы я могу использовать , то что я их не пользовал , дурак я ..

моя проблема такова, что мне надо проверить сколько раз произошла замена и если замена произошла больше чем N раз , то надо выдать ошибку , а не ограничить ........

так же по ходу дела , можно ли каким то способом вытащить преременные $1 $2 $3 .... из preg_replace(); ???
если писать
PHP код:
$var="string";
$var=preg_replace("'(string)'i","here $1",$var);
// замена произошла! теперь $var=="here string";
//но если я пробую использовать после переменую $1 то ничего хорошего не происходит ( ошибка) 
__________________
always confused

Старый 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;

?>

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

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
ЗЫ

Не сомневаюсь что все можно сделать легче.

Старый 18.07.2002, 01:00
Gandalf вне форума Посмотреть профиль Отправить личное сообщение для Gandalf Найти все сообщения от Gandalf
  № 6  
Gandalf

Регистрация: Jul 2000
Адрес: Kitchener/Canada
Сообщений: 114
Отправить сообщение для Gandalf с помощью ICQ
посиб , идея понята
__________________
always confused

Старый 18.07.2002, 01:04
juggy вне форума Посмотреть профиль Отправить личное сообщение для juggy Посетить домашнюю страницу juggy Найти все сообщения от juggy
  № 7  
juggy
 
Аватар для juggy

Регистрация: Feb 2001
Адрес: LJ/~aleshru
Сообщений: 4,778
Отправить сообщение для juggy с помощью ICQ Отправить сообщение для juggy с помощью MSN Отправить сообщение для juggy с помощью Yahoo Отправить сообщение для juggy с помощью Skype™
Простите! п почему сначала оба писали на транслите, а потом на русском?
__________________
Что за дурь? 50 символов в подписи!?

Старый 18.07.2002, 01:20
Gandalf вне форума Посмотреть профиль Отправить личное сообщение для Gandalf Найти все сообщения от Gandalf
  № 8  
Gandalf

Регистрация: Jul 2000
Адрес: Kitchener/Canada
Сообщений: 114
Отправить сообщение для Gandalf с помощью ICQ
шифровались

ЗЫ : я сидел за компом без кирилики
__________________
always confused

Старый 18.07.2002, 01:22
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 9  
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
А мне в лом было клаввиши "нащупывать" на испанской клаве. А потом я вспомнил как приятно читать мессаги на кирилице.

Создать новую тему   Часовой пояс GMT +4, время: 05:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.