Анализ строковой переменной

NickD

Новичок
Добрый день, знатоки PHP!
Не могу понять в чём проблема. Есть строковая переменная $str
Проверяются её первые 2 символа и, в зависимости от проверки, производится действие.
Привожу код, производящий проверку:
Код:
 if(eregi("u", $str[0]))  { if(eregi("[r-z]", $str[1])) {echo "условие 1 выполнено, продолжаем";} }
 
 elseif(eregi("u", $str[0]))  { if(eregi("[a-i,0-9]", $str[1])) {echo "условие 2 выполнено, продолжаем";} }

 elseif(eregi("u", $str[0]))  { if(eregi("[j-m]", $str[1])) {echo "условие 3 выполнено, продолжаем";} }

 
 else { print "условия не выполнены, стоп"; break; }
При работе, если условия не выполняются, не происходит остановка!
Не могу понять почему. Заранее благодарю за помощь.
 

gerasim

Новичок
вот это
PHP:
else { print "условия не выполнены, стоп"; break; }
сработает только если не выполняется условие eregi("u", $str[0]), потому что прочие ИФы у тебя вложенные.
Перепиши как
PHP:
if ( eregi("u", $str[0])  &&  eregi("[r-z]", $str[1]) ) {
    echo "условие 1 выполнено, продолжаем";
} elseif ( ... ) {
    ......
}else { 
    print "условия не выполнены, стоп"; break; 
}
 

A1x

Новичок
NickD индус? :)

1. форматируем нормально код:
PHP:
if (eregi("u", $str[0])) {
    if (eregi("[r-z]", $str[1])) {
        echo "условие 1 выполнено, продолжаем";
    }
} elseif (eregi("u", $str[0])) {
    if (eregi("[a-i,0-9]", $str[1])) {
        echo "условие 2 выполнено, продолжаем";
    }
} elseif (eregi("u", $str[0])) {
    if (eregi("[j-m]", $str[1])) {
        echo "условие 3 выполнено, продолжаем";
    }
} else {
    print "условия не выполнены, стоп"; break;
}
почему в if и elseif проверяется одно и то же условие?

2. if (eregi("u", $str[0])) ... точно индус

3. ereg* функции давно deprecated вместо них используйте ф-ции preg_*
 

Pascal9x

Новичок
Функции ereg потенциально уязвимы к нуль-байту на старых версиях пхп, крайне не рекомендую их использование. Кроме того в php 5.3 они считаются deprecated.
 

NickD

Новичок
почему в if и elseif проверяется одно и то же условие?

2. if (eregi("u", $str[0])) ... точно индус
Проверяется сразу 2 условия. И при чём здесь индус?

Не можешь конкретно подсказать - лучше промолчи и уважай участников форума.

Ещё раз большое спасибо gerasim - всё получилось.
 

A1x

Новичок
NickD
уважать участников форума - это как минимум форматировать свой код, который вы постите на форум
(кстати после этого вы бы и сами скорее всего заметили свою ошибку)
в хороших IDE (например netbeans) код форматируется простым нажатием комбинации клавиш - напр. Alt-Shift-F

И при чём здесь индус?
http://lurkmore.ru/Индусский_код

2. if (eregi("u", $str[0])) ...
практически здесь всего лишь проверяются на равенство два символа - использование рег.. выражений тут не оправдано
можно заменить на if('u' == strtolower($str[0])) ...
 

NickD

Новичок
NickD
в хороших IDE (например netbeans) код форматируется простым нажатием комбинации клавиш - напр. Alt-Shift-F

практически здесь всего лишь проверяются на равенство два символа - использование рег.. выражений тут не оправдано
можно заменить на if('u' == strtolower($str[0])) ...
За IDE Netbeans - спасибо! Просто не знал об этом.
Жизнь заставила на старости лет обратить взор на PHP и не всё понятно.
Относительно символов - их там больше. Просто пример привёл упрощённый.
 
Сверху