我将使这快速简单
我有一个查询,我想拆分它,以便它返回一个带有:符号后面的单词的数组。这是我到目前为止所做的,它按预期进行,但在匹配的针之前返回整个字符串。我只想让数组包含:符号后面的单词。
<?php $arr = preg_split('/[:]/', $query, 0);
print_r($arr);
?>
返回
Array
(
[0] => SELECT user_name FROM test WHERE user_name =
[1] => user_name
)
使用此查询
“SELECT user_name FROM test WHERE user_name =:user_name”
感谢您的帮助
答案 0 :(得分:4)
试试这个:
preg_match_all("/:(\w+)/", $string, $matches);
通过执行此操作,位于:之后的所有元素都将位于$ matches [1]子数组中。我假设您要处理具有多个命名参数的SQL语句。例如:
SELECT user_name FROM test WHERE user_name = :user_name and last_name = :last_name
将导致$ match成为:
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"
}
}
答案 1 :(得分:0)
我编辑了你的问题,以便其他人看到结果更好。但是答案:
preg_split
返回一个数组,你正在寻找的是数组元素:
<?php $arr = preg_split('/[:]/', $query, 0);
print($arr[1]);
?>
这会根据需要返回user_name
。
答案 2 :(得分:0)
您可能想要使用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