не разберусь с приоритетами

O3opHuK

Guest
не разберусь с приоритетами

PHP:
if (strtolower((substr($url,0,7))!="http://") && (strtolower(substr($url,0,6))!="ftp://")) $url="http://".$url;
PHP:
if ((strtolower(substr($url,0,7))!="http://") && (strtolower(substr($url,0,6))!="ftp://")) $url="http://".$url;
Второй вариант не вызывает вопросов.
Но почему первый вариант выполняется так же ?

-~{}~ 28.08.05 16:16:

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

O3opHuK

Guest
ммм..
что делает функция strtolower () я понимаю ))
Не пойму почему в первом случае когда аргумент функции
есть ((substr($url,0,7))!="http://") она выполняется нормально..
Ведь получается функцией substr() отрезается 7 символов и сразу идёт сравнение, а потом только идёт функция преобразования в нижний регистр....
или не так :?
 

O3opHuK

Guest
да )

-~{}~ 28.08.05 16:46:

<?
include "config.php";
$url="http://xssx.ru/index.php";
$url=htmlspecialchars(stripslashes($url));


$url=strtr($url,"HTPf","htpf");
echo $url."<br>";
if (strtolower((substr($url,0,7))!="http://") && (strtolower(substr($url,0,6))!="ftp://")) $url="http://".$url;
echo $url;

if ((strtolower(substr($url,0,7))!="http://") && (strtolower(substr($url,0,6))!="ftp://")) $url="http://".$url;
echo $url;
?>
 

Фанат

oncle terrible
Команда форума
что, блин, за манера задавать вопросы!
сидишь, пялишься в этот код, пока не сообразишь, что правая часть здесь вообще не при чём, и левая, в общем, тоже, а разница только в скобках.
тьфу.

-~{}~ 28.08.05 16:46:

о.
ещё лучше.
мало ему кода - он ещё накидал.
 

Фанат

oncle terrible
Команда форума
чувачок.
слушай сюда.
то, что ты нам тут мозг паришь - это половина беды.
мы тебя и послать можем.
А вот то, что себе - это уже серьёзнее.

Если ты не научишься решать ТОЛЬКО ТУ проблему, которую хочешь решить, то лучше бы тебе сразу забыть о такой штуке, как программирование.

если тебя интересует результат выполнения кода
substr($url,0,7))!="http://"
то и выполнять надо ТОЛЬКО ЕГО.
ПРИЧЁМ БЕЗ ПЕРЕМЕННЫХ.
Чтобы видеть всё СОБСТВЕННЫМИ ГЛАЗАМИ, а не гадать на кофейной гуще.

Надеюсь, всё вышесказанное не слишком непосильно для твоего восприятия.

-~{}~ 28.08.05 16:52:

При переходе же к работе с переменными всё равно выводить их на экран на каждом этапе.
чтобы не относить результат своих кривых рук на некие сказочные свойства языка.
 

Profic

just Profic (PHP5 BetaTeam)
PHP:
if (true
    && strtolower(substr($url, 0, 7)) != 'http://'
    && strtolower(substr($url, 0, 6)) != 'ftp://'
) {
    $url = 'http://' . $url;
}
:p
 

O3opHuK

Guest
Я хотел сказать только что бука и буду впредь внимательней относиться к постановке конкретного вопроса по конкретной проблеме.
Всё же видимо я не правильно сформулировал вопрос, потому что я так и делаю )) У меня возник скорее вопрос, а не проблема, при реализации гостевой.. Я вынес конкретный вопрос в отдельный скрипт.. протестировал, убрав всё лишнее.
подставлял самые простый конекретные значения..
Вопрос не решился, решил спросить, почему при перестановке одной скобки (при этом как я понимаю в данном конкретном случае меняется приоритет выполнения операции), но результат остается удовлетворяющим начальному условию.
Извините если отнял минутку и частичку внимания, а тем более нервов. я не намеренно.
 

Фанат

oncle terrible
Команда форума
[ага ошибся]

Я хотел сказать только что бука
мне от тебя нужны были не эти рыдания с оправданиями, а ЧЁТКАЯ ПОСТАНОВКА ВОПРОСА.
Ты способен на неё?
Если нет - то не надо извинений, а просто молча иди восвояси.
Если способен - будь добр привести её без беллетристики.

-~{}~ 28.08.05 17:14:

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

-~{}~ 28.08.05 17:18:

если ты путаешься со скобками, то не пиши подряд.
пиши в столбик.
$url="aaa";
$res=substr($url,0,7);
$bool=$res!="http://";
$low=strtolower($bool);
if ($low) echo 1;

И НА КАЖДОМ ЭТАПЕ ПРОВЕРЯЙ РЕЗУЛЬТАТ!

-~{}~ 28.08.05 17:29:

одного я не понял - при чём здесь приоритеты?
 

O3opHuK

Guest
Я никогда не рыдаю. Чё ты такой злой ? Я извинился потому что был не прав. Ты просто можешь игнорировать моё сообщение, удалить пост, указав объективную причину: "парень не умел задавать вопросы", я тут всего лишь гость и то нежданный.

Если ещё не совсем заел вас то попробую ещё раз сначала:
Пример кода:
PHP:
if ((strtolower(substr($url,0,7))!="http://") && (strtolower(substr($url,0,6))!="ftp://")) {}
Вопрос у меня по поводу расстановки скобок.
Интересует конкретно поэтапно, как идёт выполнение в том месте где первая функция strtolower().
Я понимаю так:
сначала функция substr() возвращает от переменной $url первые 7 символов, далее каждый символ из этих 7 преобразуется в нижний регистр, потом сравниваются со строкой "http://".
А если скобку пернести:
PHP:
(strtolower((substr($url,0,7))!="http://"))
то я так понимаю сначала выполняется ((substr($url,0,7))!="http://"), а потом преобразование в нижний регистр ?
но...так быть не может...
 

SiMM

Новичок
[m]language.types.string#language.types.string.casting[/m]
[m]strtolower[/m]
Внутривенно.
 

O3opHuK

Guest
Фанат вот смотри.
Что не может это я сделал вывод из того, что ведь если сначала сравнивает..
$url="AAA";
$bool="aaa";
if (strtolower($url==$bool)) результат false ?
а если так if (strtolower($url)==$bool) так ведь true ?
 

Фанат

oncle terrible
Команда форума
ну и что ты видишь в этом коде удивительного?

-~{}~ 28.08.05 18:05:

то я так понимаю сначала выполняется ((substr($url,0,7))!="http://"), а потом преобразование в нижний регистр ?
но...так быть не может...
при чём здесь вообще коды какие-то?
что такого удивительного в том, что сначала получается булева переменная, а потом она переводится в нижний регистр?
 

O3opHuK

Guest
Всё я нашёл свою ошибку...
Меня волновал вопрос почему результат верный, когда я вводил "HTTP://"... в том примере который привел я полностю выше есть строчка $url=strtr($url,"HTPf","htpf");...
я сократил до трех строчек скрипт и ошибка нашлась..
Спасибо большое человеческое.
 

Фанат

oncle terrible
Команда форума
О чём я тебе сказал с самого начала.
если тебя интересует результат выполнения кода
substr($url,0,7))!="http://"
то и выполнять надо ТОЛЬКО ЕГО.
ПРИЧЁМ БЕЗ ПЕРЕМЕННЫХ.
и, главное -
При переходе же к работе с переменными всё равно выводить их на экран на каждом этапе.
чтобы не относить результат своих кривых рук на некие сказочные свойства языка.
 
Сверху