字符串的匹配和查找 1.int preg_match ( string $pattern , string $subject [, array $matches [, int $flags ]] ) 在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。 如果提供了 matches ,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。 flags 可以是下列标记: PREG_OFFSET_CAPTURE 如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自 PHP 4.3.0 起可用。 flags 参数自 PHP 4.3.0 起可用。 preg_match() 返回 pattern 所匹配的次数。要么是 0 次(没有匹配)或 1 次,因为 preg_match() 在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到 subject 的结尾处。如果出错 preg_match() 返回 FALSE。 2.int preg_match_all ( string pattern, string subject, array matches [, int flags] ) 3.array preg_grep ( string pattern, array input ) preg_grep() 返回一个数组,其中包括了 input 数组中与给定的 pattern 模式相匹配的单元。 4. string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。 Note: 如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。 before_needle 若为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。 该函数区分大小写。如果想要不区分大小写,请使用 stristr()。 5. strpos ― 查找字符串首次出现的位置 int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )//查找字符串首次出现的位置 needle 如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。 offset 可选的 offset 参数可以用来指定从 haystack 中的哪一个字符开始查找。返回的数字位置是相对于 haystack 的起始位置而言的。 6. strrpos ― 计算指定字符串在目标字符串中最后一次出现的位置 说明 int strrpos ( string $haystack , string $needle [, int $offset = 0 ] ) 7. substr ― 返回字符串的子串 说明 string substr ( string $string , int $start [, int $length ] ) length 如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。 如果提供了负数的 length,那么 string 末尾处的许多字符将会被漏掉(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。 如果提供了值为 0,FALSE 或 NULL 的 length,那么将返回一个空字符串。 如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。 $rest = substr("abcdef", 0, -1); // 返回 "abcde" $rest = substr("abcdef", 2, -1); // 返回 "cde" $rest = substr("abcdef", 4, -4); // 返回 "" $rest = substr("abcdef", -3, -1); // 返回 "de"