正则表达式同样被PHP所支持。对于使用常规的PHP字符串函数很难实现的字符串操作,而只要习惯使用正则表达式,它的解决办法就会唾手可得。
一条值得牢记于心的细节,就是常规的PHP字符串操作函数的执行比正则表达式要快很多,因此只有需要的时候才用后者。例如,如果仅仅只是想从字面上检查一个字符串是否包含另一个,和这里的正则表达式匹配函数preg_match()相比,使用strpost()或strstr()将要高效得多。
PHP有很多正则表达式函数,为了方便起见,将最常用的列于下表。preg_match和preg_replace,它们是使用最频繁的;但是了解其他函数也有好处。
PHP函数 |
描述 |
preg_grep |
接收的参数是下面是正则表达式,和一个输入字符串数组。函数返回一个包含了与模式匹配的输入元素的数组。 |
preg_match |
接收的参数是正则表达式和一个字符串。如果匹配成功,函数返回1,否则返回0。一旦匹配成功,函数不搜索更多匹配,执行结束。 |
preg_match_all |
除了要尝试所有匹配外,其他与preg_match类似。当一个匹配成功后,继续执行对字符串其他部分的后续搜索。 |
preg_quote |
用反斜杠对输入字符串中所有的正则表式特殊字符进行转义。 |
preg_replace |
用替代表达式来替代字符串中的匹配部分。它接受三个可选参数;匹配模式,替代表达式,输入字符串。 |
preg_replace_callback |
除了将替代表达式改为指定的能返回替代表达式的函数以外,其他与preg_replace类似。 |
preg_split |
以匹配正则表达式的边界分割字符串,结果中的子字符串将以数组形式返回。 |
当提供一个正则表达式给PHP函数时,需要封闭以分隔符定义的正则表达式,这与mod_rewrite不太一样。分隔符可以是任何字符,但是如果这个字符需要出现在正则表达式里,它就必须用反斜杠字符来转义。这里的例子使用了“#”作为分隔符。因此如果表达式中需要表示一个字面意义的“#”,它就得表示成“\#”。