Реклама на сайте Advertise with us

Ситуация в пхп

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 02/05/14 в 22:50       Ответить с цитатойцитата 

Собственно код:
Код: [развернуть]

вот интересная ситуация
произвожу парсинг url, и при попытке проверить содержится ли в переменной $reff значение "text=", результат FALSE, если удаляю первый символ и произвожу поиск "ext=" выдает TRUE, пытаюсь найти "tex" тоже FALSE. т.е. вся причина в первом символе t.
Что за ерунда такая может быть?

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 02/05/14 в 22:58       Ответить с цитатойцитата 

Как-то так

Код:
$url = "http://www.yandex.ru/yandsearch?text=zapros&clid=9582&lr=35";
$query = array();
parse_str(parse_url($url, PHP_URL_QUERY), $query);
if (isset($query['text'])) {
    echo "good";
}

10
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 02/05/14 в 22:59       Ответить с цитатойцитата 

Лень разбираться. Но как то так:

<?php
$query = $arr['query'];
$params = parse_str($query, parsed_params);
if (isset($params['text'])) {
print "bla bla";
} else {
print "а нифига нету";
}

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

8
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 02/05/14 в 23:00       Ответить с цитатойцитата 

У Yacc: комп более быстрый smail101.gif

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

8
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 02/05/14 в 23:06       Ответить с цитатойцитата 

ок, спасибо. вариант с parse_str() был
вот просто стало интересно почему, в том варианте не пошло, почему этот первый символ играет роль. icon_confused.gif
А так еще раз спасибо.

0
 



С нами с 13.08.03
Сообщения: 533
Рейтинг: 481

Ссылка на сообщениеДобавлено: 02/05/14 в 23:50       Ответить с цитатойцитата 

Lexikon писал:
вот просто стало интересно почему, в том варианте не пошло, почему этот первый символ играет роль. icon_confused.gif

а почитай про разницу между != и !== в нынешнем пхп например
неявная типизация зло, сишники снизу отказались почти уже, теперь и пхпшники сверху тоже

9
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 02/05/14 в 23:51       Ответить с цитатойцитата 

нашел выход из ситуации в моем случае.
можно сделать так
if (stripos("_".$reff, "text="))
тогда этот символ подчеркивания уходит в первый символ, и все работает прекрасно trollface.png

0
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 03/05/14 в 04:14       Ответить с цитатойцитата 

dm писал:
а почитай про разницу между != и !== в нынешнем пхп например
неявная типизация зло, сишники снизу отказались почти уже, теперь и пхпшники сверху тоже

а че там за разница?
многие говорят что неявная типизация зло, а еще многие кодят на уровне error_reporting(E_ALL), но я реально ни разу за свою практику не встречал багов связанных с этими проблемами.

ну с типизацией понятно, там могут быть нюансы в мелких случаях когда все-таки надо isset проверить, это мы не рассматриваем.

а то мне до сих пор кажется что это основное преимущество пхп smail101.gif ну т.е. пхп был сделан простым - и остается простым, в отличие от прочих

сори за офтоп)

10
 



С нами с 13.08.03
Сообщения: 533
Рейтинг: 481

Ссылка на сообщениеДобавлено: 03/05/14 в 05:07       Ответить с цитатойцитата 

да врядли совсем оффтоп, все же в программерском подфоруме сидим
на E_ALL конечно кодят только очень самоуверенные личности.. icon_smile.gif
проблема как раз в том, что от версии к версии эту простоту зажимают в рамки - и иногда старый код просто отказывается после апгрейда пхп работать или ведет себя так непредсказуемо, что волосы повыдергиваешь в самых нескромных мечтах пока докопаешься
упомянутый ТС пример
---
http://ru2.php.net/manual/en/function.strpos.php
Warning
This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.
---
в каком еще языке есть ЧЕТЫРЕ булевских переменных ??
и ==/!= (ну по понятиям типа да..)
и ===/!== (ша ! а вот тута четко все !)
для опять же по определению двоичной алгебры ? дурдом.. галоперидолу всем от заведения icon_smile.gif
так что насчет рожден был простым - согласен, а вот с остальным приходилось неприятно нарываться уже

9
 



С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134

Ссылка на сообщениеДобавлено: 03/05/14 в 08:27       Ответить с цитатойцитата 

Lexikon писал:
нашел выход из ситуации в моем случае.
можно сделать так
if (stripos("_".$reff, "text="))
тогда этот символ подчеркивания уходит в первый символ, и все работает прекрасно trollface.png


Правильный выход из ситуации - правильно пользоваться функцией. В мануале сказано, что если функция не находит вхождения подстроки то она возвращает FALSE, тогда проверяем результат учитывая тип возвращаемого значения.

Код:
$url = "http://www.yandex.ru/yandsearch?text=zapros&clid=9582&lr=35";
$arr = parse_url($url);
$reff = $arr['query'];
if (stripos($reff, "text=") !== false) {
    echo "good";
}

10
 

продаю базы адалт кейвордов

С нами с 09.11.02
Сообщения: 9045
Рейтинг: 3772


Передовик Master-X (16.05.2004) Передовик Master-X (01.06.2004)
Ссылка на сообщениеДобавлено: 03/05/14 в 17:32       Ответить с цитатойцитата 

Lexikon писал:
вот просто стало интересно почему, в том варианте не пошло, почему этот первый символ играет роль


потому что он не первый, а нулевой
с нуля начинается нумерация символов в строке
Функция возвращает позицию, с которой в строке начинается заданная подстрока. А это 0. А ноль приводится к FALSE.
Надо было результат либо явно сравнивать с FALSE (===FALSE) или проверять на >=0

сдам подпись, стучите в личку

11
 

💀💀💀

С нами с 31.05.10
Сообщения: 4688
Рейтинг: 727

Ссылка на сообщениеДобавлено: 16/05/14 в 22:12       Ответить с цитатойцитата 

звиняюсь что так поздно, делать просто нефиг icon_rolleyes.gif
Код: [развернуть]

Загоняем все а вссоциативный массив и не морочим голову в дальнейшем.

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »