2014-10-01 7 views
0

Вот что я в настоящее время работы:Проверка строки запроса для «{» или «}»

$one = (isset($_GET["onen"]) && $_GET["onen"] !== "{stn}") && (isset($_GET["onec"]) && $_GET["onec"] !== "{cid}"); 

, что это делает проверяет URL-адрес для ?onen и также убеждается ?onen не имеет значения {stn}. Он делает то же самое для ?onec и {cid}

То, что я хотел бы сделать, это проверить строку запроса, чтобы убедиться, что { и } являются НИГДЕ можно найти в строке для onen и onec, так что даже если строка заканчивается st{n} Мне хотелось бы знать, что { есть

Как бы добавить эту функциональность в переменную $one?

EDIT Я попытался это:

$one = (isset($_GET["onen"]) && $_GET["onen"] !== "{stn}") && strpos('{', $_GET['onen']) && strpos('}', $_GET['onen']) !== FALSE && (isset($_GET["onec"]) && $_GET["onec"] !== "{cid}") && strpos('{', $_GET['onec']) && strpos('}', $_GET['onec']) !== FALSE; 

на StrPos останавливает остальную часть кода работать даже без { или } будучи в любом месте строки

EDIT # 2:

здесь полная версия php:

не 10
$one = (isset($_GET["onen"]) && $_GET["onen"] !== "{stn}") 
     && strpos('{', $_GET['onen']) !== FALSE && strpos('}', $_GET['onen']) !== FALSE 
     && (isset($_GET["onec"]) && $_GET["onec"] !== "{cid}") 
     && strpos('{', $_GET['onec']) !== FALSE && strpos('}', $_GET['onec']) !== FALSE; 

if($one) { 

    $value = "yes"; 


}else{ 
    $value = "no"; 

}?> 

<?php echo $value ?> 

после добавления StrPos, даже без { или } в строке, я все еще получаю значение «нет», когда он должен быть «да», как это было раньше

Просто так я понял, Мне также нужно, чтобы это работало, если есть только { или только } в строке .. не обязательно должно быть как в строке

+2

'StrPos ('{', $ _GET ['onen'])! == FALSE'? –

ответ

1

Для этого вы можете использовать strpos.

Проверить, есть ли {.

strpos('{', $_GET['onen']) !== FALSE 

И

strpos('{', $_GET['onec']) !== FALSE 

UPDATE

$one = (isset($_GET["onen"]) && $_GET["onen"] !== "{stn}") 
     && strpos('{', $_GET['onen']) !== FALSE && strpos('}', $_GET['onen']) !== FALSE 
     && (isset($_GET["onec"]) && $_GET["onec"] !== "{cid}") 
     && strpos('{', $_GET['onec']) !== FALSE && strpos('}', $_GET['onec']) !== FALSE; 
+0

Как бы добавить это в мой текущий пример кода? и поскольку я хочу сделать это как для '{' и '}', это будет 'strpos ('{', $ _GET ['onen']) && strpos ('}', $ _GET ['onen'])! == FALSE'? –

+0

Не совсем, это были бы strpos ('{', $ _GET ['onen'])! == FALSE && strpos ('}', $ _GET ['onen'])! == FALSE –

+0

как добавить это в мой текущий пример кода? –

0

Вы можете проверить с StrPos, как предложил Дэвид или использовать

preg_match('#{.*?\}#', $_GET['onen']) 

, чтобы проверить, если это точно {ANYWORD}

Fiddle: http://sandbox.onlinephpfunctions.com/code/2929489c07e181ec46a0587e0e6c80f2794d5443

второй вариант, чтобы проверить только для {или}

preg_match('#({|})#', $_GET['onen']) 

Скрипки: http://sandbox.onlinephpfunctions.com/code/8136b2e71828b926d4d917b90651e9f0be07b17c

+0

будет ли это работать, если его что-то есть? –

+0

yep :) Он будет работать со всем, что содержит {anyword}, ​​поэтому может быть asdfasdf {word} или {word} или {word} строки adfasdf. – Robert

+0

ok, и он также будет работать, если присутствуют только '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'или' –

0

Easy с регулярным выражением, этой

$onen = isset($_GET["onen"]) ? $_GET["onen"] :""; 
$onec = isset($_GET["onec"]) ? $_GET["onenc"] :""; 

$pattern = '/{.+}/U'; 

if(preg_match($pattern, $onen) || preg_match($pattern, $onec)){ 
    echo "one or both has {}"; 
    $one=false; 
}else{ 
    $one=true; 
} 
  1. Будет соответствовать "DASD {а} ДАС" или "{а}" и другие подобные
  2. не будет соответствовать "Asdas D} ASD" "DASD} ASD {" и другие подобные
Смежные вопросы