PHP与preg_match有关

时间:2014-06-11 13:14:09

标签: php

我以为我有这个工作;然而,经过进一步的评估,它似乎没有像我希望的那样工作。

我有一个查询拉回一个字符串。该字符串是逗号分隔的列表,如下所示:

(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长度可以改变。

1 个答案:

答案 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