我以为我有这个工作;然而,经过进一步的评估,它似乎没有像我希望的那样工作。
我有一个查询拉回一个字符串。该字符串是逗号分隔的列表,如下所示:
(1,145,154,155,158,304)
没有添加或删除任何内容。
我有一个函数,我认为我可以使用preg_match
来确定用户的id是否包含在字符串中。但是,似乎我的代码正在寻找任何部分。
preg_match('/'.$_SESSION['MyUserID'].'/',$datafs['OptFilter_1']))
使用相同的它看起来像这样
preg_match('/1/',(1,145,154,155,158,304))
我想。在测试我的用户id是否为4之后,当前代码返回true并且不应该返回true。我究竟做错了什么?如您所见,id长度可以改变。
答案 0 :(得分:2)
最好将所有ID放在一个数组中,然后检查是否存在所需的ID:
<?php
$str = "(1,145,154,155,158,304)";
$str = str_replace(array("(", ")"), "", $str);
$arr = explode(',', $str);
if(in_array($_SESSION['MyUserID'], $arr))
{
// ID existed
}
作为您的字符串 - 在处理正则表达式时, 但不建议 ,正如下面的正则表达式将匹配您的ID:
preg_match("@[,(]$ID[,)]@", $str)
<强>说明强>:
[,(] # a comma , or opening-parenthesis ( character
$ID # your ID
[,)] # a comma , or closing-parenthesis ) character