我需要确定一个字符串,该字符串在另一个字符串中可以包含1- 6#个符号,然后重新运行子字符串的开始位置和子字符串本身。
例如:
example ## string => [strpos=> 9, stren => 2]
到目前为止,我有这个:
/["#"]{1,6}/gm
有人可以帮忙吗?
答案 0 :(得分:3)
您可以将preg_match
参数与preg_match_all
一起使用(或PREG_OFFSET_CAPTURE
获得多个匹配项):
$str = "example ## string";
if (preg_match('~#{1,6}~', $str, $m, PREG_OFFSET_CAPTURE)) {
print_r($m);
}
PREG_OFFSET_CAPTURE
如果传递了此标志,则对于每个匹配项,还将返回附加字符串偏移量。请注意,这会将matches
的值更改为一个数组,其中每个元素都是一个数组,该数组由偏移量为 0 的匹配字符串及其字符串偏移量为subject
(位于偏移 1 处)。
请参见PHP demo,输出:
Array
(
[0] => Array
(
[0] => ##
[1] => 8
)
)