如何使用PHP在字符串中查找模式的位置?

如何使用PHP在字符串中查找模式的位置?,php,Php,我是php的新手。是否有任何函数可以匹配给定字符串中的模式并返回该字符串中模式开头的索引? 例如:如果$pattern='/abcd/',$string='weruhfabcdwuir',那么函数应该返回6,因为6是$string中'abcd'的起始索引,您可以使用strpos进行此操作 您可以为此使用strpos 如果您试图匹配一个regexp模式而不是一个直字符串,strpos将帮不上忙。相反,如果只希望在第一次出现时匹配,或者希望匹配所有出现和PREG_OFFSET_CAPTURE标志,请

我是php的新手。是否有任何函数可以匹配给定字符串中的模式并返回该字符串中模式开头的索引? 例如:如果$pattern='/abcd/',$string='weruhfabcdwuir',那么函数应该返回6,因为6是$string中'abcd'的起始索引,您可以使用strpos进行此操作

您可以为此使用strpos


如果您试图匹配一个regexp模式而不是一个直字符串,strpos将帮不上忙。相反,如果只希望在第一次出现时匹配,或者希望匹配所有出现和PREG_OFFSET_CAPTURE标志,请使用:

使用preg_match_all进行多个匹配的示例:


如果您试图匹配一个regexp模式而不是一个直字符串,strpos将帮不上忙。相反,如果只希望在第一次出现时匹配,或者希望匹配所有出现和PREG_OFFSET_CAPTURE标志,请使用:

使用preg_match_all进行多个匹配的示例:

$pattern = '/abcd/';
$string = 'weruhfabcdwuir';

preg_match($pattern, $string, $matches, PREG_OFFSET_CAPTURE);

// $matches[0][0][1] == 6, see PHP.net for structure of $matches
print_r($matches);
$pattern = '/abcd/';
$string = 'weruhfabcdwuirweruhfabcdwuir';

preg_match_all($pattern, $string, $matches, PREG_OFFSET_CAPTURE);

// $matches[0][0][1] == 6
// $matches[0][1][1] == 20
print_r($matches);