php preg_match方法

preg_match方法利用正则表达式,处理一个字符串,将所得结果保存在array对象中,array[0]保存匹配整个正测表达式的串;array[1]保存第一个由小括号括起来的字串,后面依次类推。

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

如下代码:

<?php
$pattern = "/abc (li|wang).../";
$arr = array();
$ret = preg_match($pattern, "xx abc li find......", $arr);
echo "ret=$ret\n";
var_dump($arr);

运行得到结果如下:

ret=1
array(2) {
  [0] =>
  string(9) "abc li fi"
  [1] =>
  string(2) "li"
}

如上,我们得到了match整个表达式的"abc li fi"和括号里"li";如果我们还想得到每一个match的对象在原串中的位置,则可以使用PREG_OFFSET_CAPTURE.

<?php
$pattern = "/abc (li|wang).../";
$arr = array();
$ret = preg_match($pattern, "xx abc li find......", $arr, PREG_OFFSET_CAPTURE);
echo "ret=$ret\n";
var_dump($arr);

运行,得到

ret=1
array(2) {
  [0] =>
  array(2) {
    [0] =>
    string(9) "abc li fi"
    [1] =>
    int(3)
  }
  [1] =>
  array(2) {
    [0] =>
    string(2) "li"
    [1] =>
    int(7)
  }
}

这样,array[i]下的元素变成了array对象,包含2个元素,第二个就是该pattern在原串中的位置。

当然preg_match还可以传offset参数,表示从原串哪个位置开始执行匹配。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。