Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从字符串中提取多个变量值(PHP)_Php_Arrays_String - Fatal编程技术网

如何从字符串中提取多个变量值(PHP)

如何从字符串中提取多个变量值(PHP),php,arrays,string,Php,Arrays,String,例如: $string = "AND (pr.StatusCode <> 'U') AND ((pr.pkBrand = 9) OR (pr.pkBrand = 70)) AND ((pr.pkCategory = 55) OR (pr.pkCategory = 56)) AND (pr.StatusCode <> 'D')"; 我需要将与pkBrand关联的值(即9和70)放入一个数组中,以便在其他地方使用,并将pkCategory的值(即55和56)再次放入一个单独

例如:

$string = "AND (pr.StatusCode <> 'U') AND ((pr.pkBrand = 9) OR (pr.pkBrand = 70)) AND ((pr.pkCategory = 55) OR (pr.pkCategory = 56)) AND (pr.StatusCode <> 'D')";
我需要将与pkBrand关联的值(即9和70)放入一个数组中,以便在其他地方使用,并将pkCategory的值(即55和56)再次放入一个单独的数组中,以便在其他地方使用


我该怎么做呢。

也许你可以这样做:

$string = "AND (pr.StatusCode <> 'U') AND ((pr.pkBrand = 9) OR (pr.pkBrand = 70)) AND ((pr.pkCategory = 55) OR (pr.pkCategory = 56)) AND (pr.StatusCode <> 'D')";
preg_match_all("/pr.pkBrand = (\d+)|pr.pkCategory = (\d+)/", $string, $matches, PREG_SET_ORDER);
$matches数组如下所示:

$string = "AND (pr.StatusCode <> 'U') AND ((pr.pkBrand = 9) OR (pr.pkBrand = 70)) AND ((pr.pkCategory = 55) OR (pr.pkCategory = 56)) AND (pr.StatusCode <> 'D')";
preg_match_all("/pr.pkBrand = (\d+)|pr.pkCategory = (\d+)/", $string, $matches, PREG_SET_ORDER);
阵列4{ [0] => 阵列2{ [0] => string14 pr.pkBrand=9 [1] => 第19条 } [1] => 阵列2{ [0] => string15 pr.pkBrand=70 [1] => 第2条70 } [2] => 阵列3{ [0] => string18 pr.pkCategory=55 [1] => string0 [2] => 第2条55 } [3] => 阵列3{ [0] => string18 pr.pkCategory=56 [1] => string0 [2] => 第2条56 } }


然后,您可以从中提取所需的值。

这不太简洁,但无论字段名称如何,它都可以工作:

<?php
$string = "AND (pr.StatusCode <> 'U') AND ((pr.pkBrand = 9) OR (pr.pkBrand = 70)) AND ((pr.pkCategory = 55) OR (pr.pkCategory = 56)) AND (pr.StatusCode <> 'D')";
$newString=trim(str_replace(')','',str_replace('(','',str_replace('OR','',str_replace('AND','',$string)))));
$tab=explode('pr.',$newString);
foreach($tab as $value) {
 $value=trim(str_replace(' ','',str_replace('\'','',$value)));
 $tab2[]=$value;
}
/*echo '<pre>';
var_dump($tab2);
echo '</pre>';*/
$operators=['!=','<>','<','>','='];
foreach ($tab2 as $index=>$value) {
 foreach ($operators as $operator) {
    $found=0;
    $explode=explode($operator,$value);
     if (count($explode)==1) {}//not the good one
     else {
      $found=1;
      break;
     }
 }
 if ($found==1) $newTab[$explode[0]][$index]=$explode[1];
}


echo '<pre>';
var_dump($newTab);
echo '</pre>';

?>

您的代码给了我一个错误:解析错误:语法错误,在…中意外的“[”,对于这一行$operators=[”!=',,,,,,='];对我来说没有错误。您能给我完整的错误消息吗?解析错误:语法错误,在/Users/***/Sites/***/\u plugins/site pages/public/add-a-model-pages/manage-models中意外的“[”。第547行的php是$operators=['!=',,'='];好的,你肯定使用php,你是对的,服务器运行5.3.26,你修改后的代码运行了一段时间