以下是我目前的工作:
$one = (isset($_GET["onen"]) && $_GET["onen"] !== "{stn}") && (isset($_GET["onec"]) && $_GET["onec"] !== "{cid}");
这样做会检查?onen
的网址,并确保?onen
的值不是{stn}
。它对?onec
和{cid}
我想要做的是检查查询字符串,以确保在{
的字符串中找到}
和onen
NOWHERE 和onec
因此,即使字符串最终为st{n}
,我也希望能够检测到{
是否存在
如何将此功能添加到$one
变量?
修改 我试过这个:
$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也会停止其余代码的工作
编辑#2:
这里是完整的php:
$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后,即使字符串中没有{
或}
,我仍然会得到“no”的值,如果它应该是“是”,就像之前一样
正如我所理解的那样,如果字符串中只有{
或}
,我也需要这个才能工作..不必同时在字符串中
答案 0 :(得分:1)
您可以使用strpos。
检查{是否找到。
strpos('{', $_GET['onen']) !== FALSE
和
strpos('{', $_GET['onec']) !== FALSE
<强>更新强>
$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;
答案 1 :(得分:0)
你可以像大卫建议的那样使用strpos进行检查,也可以使用
preg_match('#{.*?\}#', $_GET['onen'])
检查它是否完全{anyword}
小提琴:http://sandbox.onlinephpfunctions.com/code/2929489c07e181ec46a0587e0e6c80f2794d5443
第二个选项是仅检查{或}
preg_match('#({|})#', $_GET['onen'])
小提琴:http://sandbox.onlinephpfunctions.com/code/8136b2e71828b926d4d917b90651e9f0be07b17c
答案 2 :(得分:0)
使用正则表达式很容易,这个
$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;
}