我会让这件事变得又快又简单
我有一个查询,我想将其拆分,以便它返回一个数组,其中 : 符号后包含单词。这是我到目前为止所拥有的,它按预期执行,但返回匹配针之前的整个字符串。我只希望数组包含
:
符号后面的单词。
$query = "SELECT user_name FROM test WHERE user_name = :user_name";
$arr = preg_split('/[:]/', $query, 0);
print_r($arr);
这回来了
Array
(
[0] => SELECT user_name FROM test WHERE user_name =
[1] => 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]);
?>
这将返回
user_name
如您所愿。
您可能想使用 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