PHP正则表达式拆分


PHP regular expression split

我将制作这个快速而简单的

我有一个查询,我想将其拆分,以便它返回一个在:符号后面有单词的数组。到目前为止,这就是我所拥有的,它正如预期的那样,但在匹配的针头之前返回了整个字符串。我只希望数组在:符号之后包含单词。

<?php  $arr = preg_split('/[:]/', $query, 0); 
   print_r($arr);
 ?>

这将返回

    Array
(
    [0] => SELECT user_name FROM test WHERE user_name = 
    [1] => user_name
)

使用此查询

"从测试中选择user_name,其中user_name=:user_name"

感谢您的帮助

试试这个:

preg_match_all("/:('w+)/", $string, $matches);

通过这样做,位于:之后的所有元素都将位于$matches[1]子数组中。我假设您希望处理具有多个命名参数的SQL语句。例如:

SELECT user_name FROM test WHERE user_name = :user_name and last_name = :last_name

将导致$matches为:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(10) ":user_name"
    [1]=>
    string(10) ":last_name"
  }
  [1]=>
  array(2) {
    [0]=>
    string(9) "user_name"
    [1]=>
    string(9) "last_name"
  }
}

我编辑了您的问题,这样其他人更好地看到结果。但答案是:preg_split返回一个数组,您要查找的是数组的一个元素:

<?php  $arr = preg_split('/[:]/', $query, 0); 
   print($arr[1]);
 ?>

这将根据您的需要返回CCD_ 2。

您可能想要使用,preg_match()来实现

$query = "SELECT user_name FROM test WHERE user_name = :user_name";
preg_match('/:('w+)/', $query, $matches);
echo $matches[1]; //gives your user_name