如何使用 php if ($text like %admin%) 搜索文本

How to search text using php if ($text like %admin%)

如何使用 php 搜索文本?

类似于:

$form = $_GET['form'];

if($form like %admin%){
  $form = 1;
}

if($form like %user%){
  $form = 2;
}

然后我可以像这样使用这个查询:

SELECT * FROM people WHERE type = $form ;

您可以使用strpos

 if (strpos($form,'admin')!== false) {
 $form = 1;
 }
$form = $_GET['form'];

if(stristr($form,"admin")){
  $form = 1;
}

if(stristr($form,"user")){
  $form = 2;
}

处理用户输入时,验证不能偷懒。

如果 $_GET['form']=='adminuser',Sahil 的回答会将 $from 设置为 2。 它还使用 stristr(),出于性能原因,在这种情况下不推荐(即使 php 手册也不推荐)。

除非您有正当理由检查子字符串,否则您应该检查整个字符串。此外,您应该只使用一个条件块而不是两个单独的 if 块——这将避免覆盖 $form 和进行额外的不必要的函数调用。

if(isset($_GET['form']) && $_GET['form']=='admin'){
    $form=1;
}else{
    $form=2;  // assuming this should be the default form value
}

...或$form=isset($_GET['form']) && $_GET['form']=='admin'?1:2;


如果您要继续检查子字符串:

if(isset($_GET['form']) && strpos($_GET['form'],'admin')!==false){
    $form=1;
}else{
    $form=2;  // assuming this should be the default form value
}

...或$form=isset($_GET['form']) && strpos($_GET['form'],'admin')!==false?1:2;

根据 $_GET['form'] 的可能值,如果您检查 admin 的位置,您的验证将得到改进——字符串是以 admin 开头还是以它结尾,或者都没有?