Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2011, 20:04   #1
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию регулярные выражения

Почему строка не соответствует шаблону
Код:
<?php
$str='12345';
if(ereg("^[0-9]{5}(\-[0-9]{4})?$",str))
echo 'Строка соответствует шаблону';           
else
echo 'Строка не соответствует шаблону'; 

?>
Gen_r_questions вне форума Ответить с цитированием
Старый 21.04.2011, 21:20   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Gen_r_questions Посмотреть сообщение
Почему строка не соответствует шаблону
У вас, наверное, вывод ошибок отключен - иначе бы заметили отсутствие $ перед str в функции:
Цитата:
if(ereg("^[0-9]{5}(\-[0-9]{4})?$",str))
PS: вам в помощь - статья о регулярных выражениях
PPS: юзайте лучше preg_match() и Perl-совместимые РВ....

Последний раз редактировалось Andkorol; 21.04.2011 в 21:48. Причина: Нашел ошибку
Andkorol вне форума Ответить с цитированием
Старый 21.04.2011, 21:52   #3
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию

Цитата:
иначе бы заметили отсутствие $ перед str в функции
Поставил $ все нор стало, я ошибку не заметил потому что у меня все время(не только в этом коде, всегда когда использую ereg, выдается ошибка, в данном случае такая: Deprecated: Function ereg() is deprecated in X:\home\mysite.ru\www\1.php on line 3
+ эта ошибка вылезла в той строке, где я забыл поставить $ )
Как её исправить ?
Gen_r_questions вне форума Ответить с цитированием
Старый 21.04.2011, 22:00   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Gen_r_questions Посмотреть сообщение
Поставил $ все нор стало, я ошибку не заметил потому что у меня все время(не только в этом коде, всегда когда использую ereg, выдается ошибка, в данном случае такая: Deprecated: Function ereg() is deprecated in X:\home\mysite.ru\www\1.php on line 3
+ эта ошибка вылезла в той строке, где я забыл поставить $ )
Как её исправить ?
Её не исправить - нужно переходить на Perl-совместимые регулярки...

С версии 5.3 - не поддерживаются POSIX-выражения(функции для работы с ними).
Andkorol вне форума Ответить с цитированием
Старый 22.04.2011, 17:41   #5
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию

Код:
<?php
$str='\j';
if(ereg("^j$",$str))
echo 'Строка соответствует шаблону';     // НЕ ПОНЯТНО
else
echo 'Строка не соответствует шаблону';

?>
Почему ereg false выдает?
Gen_r_questions вне форума Ответить с цитированием
Старый 22.04.2011, 17:47   #6
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
Сообщение от Gen_r_questions Посмотреть сообщение
Код:
<?php
$str='\j';
if(ereg("^j$",$str))
echo 'Строка соответствует шаблону';     // НЕ ПОНЯТНО
else
echo 'Строка не соответствует шаблону';

?>
Почему ereg false выдает?
Потому что строка ^j$ - эквивалентно только одной букве j , а у вас \j
ssdm вне форума Ответить с цитированием
Старый 22.04.2011, 18:02   #7
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию

Код:
<?php
$str='\j';
if(ereg("^\j$",$str))
echo 'Строка соответствует шаблону';    
else
echo 'Строка не соответствует шаблону';
?>
а тут почему False
Gen_r_questions вне форума Ответить с цитированием
Старый 22.04.2011, 18:18   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Gen_r_questions Посмотреть сообщение
а тут почему False
А может-таки почитаем что-нибудь о регулярных выражениях для начала..?

Например - узнаем, что означает символ "\" в регулярных выражениях.

PS: вас, я вижу, от ereg() ну никак не оттянеш - тупиковое же направление, пустая трата времени...
Andkorol вне форума Ответить с цитированием
Старый 22.04.2011, 18:59   #9
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию

Код:
<?php
$str='\j';
if(ereg("^\j$",$str))
echo 'Строка соответствует шаблону';    
else
echo 'Строка не соответствует шаблону';
?>
if(ereg("^\j$",$str)) // здесь \ воспринимается не как экранизатор, а как символ(потому что \ срабатывает только для спец символов)

$str = '\j' // здесь такая же история

Должно быть TRUE
Цитата:

PS: вас, я вижу, от ereg() ну никак не оттянеш - тупиковое же направление, пустая трата времени...
Насчет того, что использую ereg, просто мне пока так удобнее, узнаешь как делается в ereg, поймешь как и в preg_match() делается

Последний раз редактировалось Gen_r_questions; 22.04.2011 в 19:01.
Gen_r_questions вне форума Ответить с цитированием
Старый 22.04.2011, 20:01   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Gen_r_questions Посмотреть сообщение
if(ereg("^\j$",$str)) // здесь \ воспринимается не как экранизатор, а как символ(потому что \ срабатывает только для спец символов)

Должно быть TRUE
Это справедливо для символьных классов - в обычных строковых паттернах бэкслэш - это спецсимвол, и его нужно экранировать.

Примерная ситуация описывается здесь:
PHP код:
if(ereg("^\\\j$",$str)) 
Цитата:
узнаешь как делается в ereg, поймешь как и в preg_match() делается
- звучит, как попытка выучить правила английского языка по учебнику немецкого языка...
Суть любого обучения - в выработке определенной логики или действий на уровне чуть ли не рефлексов.
Какой смысл вырабатывать у себя изначально ненужную логику - а затем пытаться натянуть её на правильный подход..?
Ну - это уже ваши личные заморочки...
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярные выражения Dimarik PHP 10 09.12.2010 21:19
регулярные выражения Namolem Общие вопросы по Java, Java SE, Kotlin 0 03.05.2010 08:08
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37
регулярные выражения wyvern PHP 3 09.04.2009 22:15
Регулярные выражения Adamant Общие вопросы C/C++ 1 26.11.2007 19:44