Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/05/14 в 22:50 |
Собственно код:
Код: [развернуть] | <?php
$url = "http://www.yandex.ru/yandsearch?text=zapros&clid=9582&lr=35";
$arr = parse_url($url);
$reff = $arr['query'];
//echo $reff;
if (stripos($reff, "text=")){
echo "good";
}
?> |
вот интересная ситуация
произвожу парсинг url, и при попытке проверить содержится ли в переменной $reff значение "text=", результат FALSE, если удаляю первый символ и произвожу поиск "ext=" выдает TRUE, пытаюсь найти "tex" тоже FALSE. т.е. вся причина в первом символе t.
Что за ерунда такая может быть?
|
|
|
|
С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538
|
Добавлено: 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";
} |
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 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
|
Добавлено: 02/05/14 в 23:00 |
У Yacc: комп более быстрый
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
8
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/05/14 в 23:06 |
ок, спасибо. вариант с parse_str() был
вот просто стало интересно почему, в том варианте не пошло, почему этот первый символ играет роль.
А так еще раз спасибо.
|
|
|
|
С нами с 13.08.03
Сообщения: 533
Рейтинг: 481
|
Добавлено: 02/05/14 в 23:50 |
Lexikon писал: | вот просто стало интересно почему, в том варианте не пошло, почему этот первый символ играет роль. |
а почитай про разницу между != и !== в нынешнем пхп например
неявная типизация зло, сишники снизу отказались почти уже, теперь и пхпшники сверху тоже
|
|
|
|
Люблю то, что делаю!
С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418
|
Добавлено: 02/05/14 в 23:51 |
нашел выход из ситуации в моем случае.
можно сделать так
if (stripos("_".$reff, "text="))
тогда этот символ подчеркивания уходит в первый символ, и все работает прекрасно
|
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 03/05/14 в 04:14 |
dm писал: | а почитай про разницу между != и !== в нынешнем пхп например
неявная типизация зло, сишники снизу отказались почти уже, теперь и пхпшники сверху тоже |
а че там за разница?
многие говорят что неявная типизация зло, а еще многие кодят на уровне error_reporting(E_ALL), но я реально ни разу за свою практику не встречал багов связанных с этими проблемами.
ну с типизацией понятно, там могут быть нюансы в мелких случаях когда все-таки надо isset проверить, это мы не рассматриваем.
а то мне до сих пор кажется что это основное преимущество пхп ну т.е. пхп был сделан простым - и остается простым, в отличие от прочих
сори за офтоп)
|
|
|
|
С нами с 13.08.03
Сообщения: 533
Рейтинг: 481
|
Добавлено: 03/05/14 в 05:07 |
да врядли совсем оффтоп, все же в программерском подфоруме сидим
на E_ALL конечно кодят только очень самоуверенные личности..
проблема как раз в том, что от версии к версии эту простоту зажимают в рамки - и иногда старый код просто отказывается после апгрейда пхп работать или ведет себя так непредсказуемо, что волосы повыдергиваешь в самых нескромных мечтах пока докопаешься
упомянутый ТС пример
---
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.
---
в каком еще языке есть ЧЕТЫРЕ булевских переменных ??
и ==/!= (ну по понятиям типа да..)
и ===/!== (ша ! а вот тута четко все !)
для опять же по определению двоичной алгебры ? дурдом.. галоперидолу всем от заведения
так что насчет рожден был простым - согласен, а вот с остальным приходилось неприятно нарываться уже
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 03/05/14 в 08:27 |
Lexikon писал: | нашел выход из ситуации в моем случае.
можно сделать так
if (stripos("_".$reff, "text="))
тогда этот символ подчеркивания уходит в первый символ, и все работает прекрасно |
Правильный выход из ситуации - правильно пользоваться функцией. В мануале сказано, что если функция не находит вхождения подстроки то она возвращает 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";
}
|
|
|
|
|
продаю базы адалт кейвордов
С нами с 09.11.02
Сообщения: 9045
Рейтинг: 3772
|
Добавлено: 03/05/14 в 17:32 |
Lexikon писал: | вот просто стало интересно почему, в том варианте не пошло, почему этот первый символ играет роль |
потому что он не первый, а нулевой
с нуля начинается нумерация символов в строке
Функция возвращает позицию, с которой в строке начинается заданная подстрока. А это 0. А ноль приводится к FALSE.
Надо было результат либо явно сравнивать с FALSE (===FALSE) или проверять на >=0
|
|
сдам подпись, стучите в личку
|
11
|
|
|
💀💀💀
С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728
|
Добавлено: 16/05/14 в 22:12 |
звиняюсь что так поздно, делать просто нефиг
Код: [развернуть] |
<?php
$url = "http://www.yandex.ru/yandsearch?text=zapros&clid=9582&lr=35";
$query = parse_url($url, PHP_URL_QUERY);
$query = explode("&", $query);
foreach ($query as $arr){
$val = explode ("=",$arr);
$key[$val[0]] = $val[1];
}
if ($key["text"]) echo $key["text"];
?>
|
Загоняем все а вссоциативный массив и не морочим голову в дальнейшем.
|
|
|
|