0

我一直在努力解决这个问题,但我无法提出解决方案,我有一串字符串

"Descripcion 1","Description 2"

我需要按数字过滤,所以我想也许我可以使用preg_match()并找到何时恰好有 1 个数字 1 或 2 等,并执行我的逻辑,因为数字之前的字符串可能会改变,但数字不能,我有尝试使用

preg_match(" 1{1}","Description 1") 

当找到一个空格后跟字符串“1”恰好一次但返回false时,它应该返回true。

也许你们中的一些人对 php 中的正则表达式有更多的经验,可以帮助我。

非常感谢您提前。

4

3 回答 3

2

您可以使用 strpos 代替 preg_match!

foreach($array as $string) {
    if(strpos($string, ' 1') !== false) {
        //String contains " 1"!!
    }
}

这将比正则表达式快得多。或者,如果数字必须位于字符串的末尾:

foreach($array as $string) {
    if(substr($string, -2) == ' 1') {
        //String ends with " 1"!!
    }
}
于 2013-07-17T08:07:44.307 回答
1

您忘记了正则表达式分隔符。改为使用preg_match('/ 1/', ...)

但是,如果您只想测试一个字符串是否包含在另一个字符串中,则根本不需要正则表达式!请参阅Lars Ebert 的回答

于 2013-07-17T08:08:59.353 回答
0

您可能会成功使用

    if (preg_match('/(.*\s[1])/', $var, $array)) {
      $descrip = $array[1];
    } else {
      $descrip = "";
    }

我在描述 1、thisIsAnother 1 和 OneMore 1 的 3 个单独的字符串值上测试了上述正则表达式。表达式发现每个值都是正确的,并保存到组 1 中。

正则表达式代码的解释是:
() 匹配括号之间的正则表达式,并将匹配捕获到反向引用号 1
中。.* 匹配零和尽可能多次(贪婪)之间的任何非换行符的单个字符
\ s 匹配单个空白字符(空格、制表符、换行符)
[1] 匹配字符 1

于 2013-07-17T08:37:37.190 回答