2010-09-03 135 views
2

如何使用的preg_match部分匹配?的preg_match部分匹配

当我有字符串:

www.stackoverflow.com 

,当我进入

stackoverflow.com or stackoverflow 

相匹配的短语返回false。我如何使它适用于部分匹配?

+0

你的问题不是很清楚(ATLEAST我)。你试图匹配什么?你目前使用什么正则表达式? – codaddict 2010-09-03 05:19:26

+1

您描述它的方式可以使用'www.stackoverflow.com'作为干草堆和'stackoverflow.com'作为strpos()中的针, – VolkerK 2010-09-03 05:45:04

回答

5

preg_match使用regular expressions,你可以得到一个很好的教程here

在特定情况下,你正在寻找一个字符串,然后通过一个可选段(更改搜索成英文,你想找到“计算器”,后面可以跟“.COM”)。 - 匹配“计算器”跟着一个可选的” .COM

preg_match('/stackoverflow(\.com)?/', $your_string) 

这里的正则表达式(/stackoverflow(\.com)?/)说同样的事情,我们的英语版本以上:正则表达式的部分可以通过使用?修改进行optional ”。

这里的正则表达式是如何工作的简要概述:

  • 上的图案两端的斜线是PHP使用附上正则表达式delimiter
  • 在正则表达式的多数字符是从字面上匹配,所以stackoverflow匹配“计算器”
  • 括号限定group,其由?制成可选的。如果没有这个组,只有在?之前的令牌才会成为可选项(在本例中为“m”)。
  • 注意,有在“.COM”点前斜线。这是因为dots在正则表达式(使用有点像一个通配符)的特殊字符,所以它需要进行转义,如果你想匹配文字点。
1

preg_match默认情况下不固定,因此会发现部分匹配没有任何特殊的努力。你有正确的顺序的论点?首先是正则表达式,然后是要搜索的字符串。所以:

if (preg_match('/stackoverflow/', 'www.stackoverflow.com')) { 
    ... 
}