假设我有一个像
这样的字符串$res = "there are many restaurants in the city. Restaurants like xyz,abc. one restaurant like.....";
在上面的示例中,我们可以找到restaurant in 3 places
。我需要将计数设为3
。
$pattern = '/Restaurant/';
preg_match($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
还有一个问题
这与上述问题有关。即,我有Food & Drinks
之类的文字。我需要将此字词与food
或drinks
或seafood
...等相匹配,任何人都可以帮我解决这个问题。提前致谢。
答案 0 :(得分:2)
i
修饰符用于不区分大小写的匹配。 ?
量词使前一个令牌可选匹配,在这种情况下,前一个s
为零或一次。
您正在使用preg_match()
想要获得所有匹配,您需要preg_match_all()
$pattern = '/restaurants?/i';
preg_match_all($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE);
print_r($matches[0]);
请参阅working demo
答案 1 :(得分:2)
你可以使用这样的正则表达式:
$pattern = '/restaurants?/i';
我对原始正则表达式进行了两处更改:
i
修饰符 - 这是不区分大小写的标记。s?
添加到搜索字符串的末尾。这使得最后s
个字符可选。它匹配s
。请注意,因为我们使用不区分大小写的标志,所以此正则表达式也会匹配以下内容:
答案 2 :(得分:1)
我建议查看regex guide - 这是一个非常简单的请求。
正则表达式中的 |
表示或?
表示前一个字符或组中的0或1,因此以下模式应适用于您的规范:
$pattern = '/[Rr]estaurants?/
答案 3 :(得分:-2)
As a solution to your problem please try executing following code snippet
$url = "http://www.examplesite.com/";
$curl = new Curl();
$res = $curl->get($url);
$pattern = '/Restaurant(s)*/i';
preg_match($pattern, substr($res,10), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);