检查" {"或"}"

时间:2014-10-01 15:03:57

标签: php

以下是我目前的工作:

$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”的值,如果它应该是“是”,就像之前一样

正如我所理解的那样,如果字符串中只有{},我也需要这个才能工作..不必同时在字符串中

3 个答案:

答案 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;
}
  1. 将匹配“dasd {as} das”或“{a}”及类似的
  2. 将不匹配“asdas d} asd”“dasd} asd {”和类似的