我一直在努力解决这个问题,我无法提出解决方案, 我有一个字符串arrary
"Descripcion 1","Description 2"
我需要按数字进行过滤,所以我想也许我可以使用preg_match()
并找到正好有1个数字1或2等等,然后根据数字可能会改变之前的字符串,但数字不能,我已经尝试过使用
preg_match(" 1{1}","Description 1")
当发现一个空格后跟字符串“1”恰好一次但返回false时,它被假定为返回true。
也许你们中的一些人在php中有更多使用正则表达式的经验,可以帮助我。
非常感谢你。
答案 0 :(得分: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"!!
}
}
答案 1 :(得分:1)
你忘记了正则表达式分隔符。请改用preg_match('/ 1/', ...)
。
但是,如果您只想测试字符串是否包含在另一个字符串中,则根本不需要正则表达式!请参阅Lars Ebert's answer。
答案 2 :(得分:0)
您可能已成功使用
if (preg_match('/(.*\s[1])/', $var, $array)) {
$descrip = $array[1];
} else {
$descrip = "";
}
我在上述正则表达式上测试了描述1,thisIsAnother 1和OneMore 1的3个单独的字符串值。通过表达式发现每个字符串都是真的,并保存到组1中。
正则表达式代码的解释是:
()匹配括号之间的正则表达式并将匹配捕获到后向引号1中
。*在0和尽可能多的次数(贪婪)之间匹配任何不是换行符的单个字符
\ s匹配单个空白字符(空格,制表符,换行符)
[1]匹配角色1