Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [POSIX] Ноль в паттерне 
V
    Опции темы
mr.Anderson
Дата 15.1.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Пишу следующий цикл:
Код

for( $i=0; $i<10; $i++ )
 if( ! eregi( "[[:print:]]+[A-zА-я_]+{$i}[[:print:]]+[A-zА-я_]+", $string ) )

Но если i==0, то нолик как будто "выпадает" при проверке условия, т.е. не учитывается. Все остальные цифры учитываются. Я так понимаю, это связано со спецификой самого языка, считающего ноль за пустое место. Но как сделать, чтобы ноль тоже считался значащей строкой?


M
Mal Hack
Название темы должно отражать ее суть



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
szz
Дата 15.1.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Код

"[[:print:]]+[A-zА-я_]+{".strval($i)."}[[:print:]]+[A-zА-я_]+"



--------------------
PM   Вверх
mr.Anderson
Дата 16.1.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Вы не поверите, но я так пробовал. smile Без толку.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
szz
Дата 16.1.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Неправда.
Я написал:
Код

<?
for( $i=0; $i<10; $i++ ){
 echo ( "[[:print:]]+[A-zА-я_]+{$i}[[:print:]]+[A-zА-я_]+<br>");
}
?>

  получилось:
Код

[[:print:]]+[A-zА-я_]+0[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+1[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+2[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+3[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+4[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+5[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+6[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+7[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+8[[:print:]]+[A-zА-я_]+
[[:print:]]+[A-zА-я_]+9[[:print:]]+[A-zА-я_]+

  Как видим, в паттерне все в порядке даже в первоначальном виде.


--------------------
PM   Вверх
Mal Hack
Дата 16.1.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Я так понимаю, надо получить в {} кол-во повторений? Тогда надо {$i} обрамить еще одними {}, т.к. конструкция {$i} идентична ".$i."
PM ICQ   Вверх
szz
Дата 16.1.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Но, как выяснилось, проблема в самом паттерне, а не "особенностях" php, при которых 0 рассматривается как пустая строка при конкетации. Как видим, php не подвел!
  А то я сначала удивился и не потрудившись проверять, предложил это громоздкое strval() 


--------------------
PM   Вверх
mr.Anderson
Дата 16.1.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Вот так сработало:
Код

//подсветка цифр
for( $i=0; $i<10; $i++ )
 if( ! eregi( "[[:print:]]+[A-zА-я_]+{{$i}}[[:print:]]+[A-zА-я_]+", $string ) )
  $string = str_replace( $i, "<font color='blue'>{$i}</font>", strtolower( $string ) );

Но я получил кучу вот таких ошибок:
Цитата

Warning: eregi(): REG_BADRPT in z:\home\localhost\www\highlighter.php on line 1753

Как раз в строке с проверкой условия.

Добавлено @ 16:12 
Как вы понимаете, цель - выделить синим цветом все цифры. Все выделяются, окромя нолика.
Вышеприведенный код сработал (я в условии удвоил фигурные скобки), но получились вот такие ошибки.

Это сообщение отредактировал(а) mr.Anderson - 16.1.2007, 16:08


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Antarn
Дата 16.1.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.8.2006

Репутация: нет
Всего: нет



используй \{{$i}\}:
Код

for( $i=0; $i<10; $i++ )
 if( ! eregi( "[[:print:]]+[A-zА-я_]+\{{$i}\}[[:print:]]+[A-zА-я_]+", $string ) )
  $string = str_replace( $i, "<font color='blue'>{$i}</font>", strtolower( $string ) );

у меня так работает

п.с.:
а зачем заключать в {} здесь:
Код

$string = str_replace( $i, "<font color='blue'>{$i}</font>", strtolower( $string ) );

PM MAIL   Вверх
szz
Дата 16.1.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Цитата

а зачем заключать в {} здесь

  Это мы слегка загнались, диствитьно  smile 
Да, оптимальнее всего
Код

"[[:print:]]+[A-zА-я_]+\{$i}[[:print:]]+[A-zА-я_]+<br>"



--------------------
PM   Вверх
mr.Anderson
Дата 16.1.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Ошибки вылазят все равно. Отстал от них вот так:
Код

for( $i=0; $i<10; $i++ )
 if( ! @ eregi( "[[:print:]]+[А-я]+\{$i}[[:print:]]+[А-я]+", $string ) )
  $string = str_replace( $i, "<font color='blue'>{$i}</font>", strtolower( $string ) );

smile 

Всем спасибо!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Mal Hack
Дата 16.1.2007, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Цитата(szz @  16.1.2007,  16:50 Найти цитируемый пост)
Да, оптимальнее всего

Не фига не оптимально... 
Время на парс строки кода будет больше.

И вообще, юзайте PRCE.

Цитата(Antarn @  16.1.2007,  16:45 Найти цитируемый пост)
используй \{{$i}\}:

Тогда мы потеряем {} как квантофикатор кол-ва повторений.

Цитата(Antarn @  16.1.2007,  16:45 Найти цитируемый пост)
а зачем заключать в {} здесь:

Читайте про синтаксис языка по работе с литералами.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.