1
<?php
$str = '123.456.789.987,654,321,';
// preg_match_all('((?<grp1>\d{3})\.|(?<grp2>\d{3})\,)', $str, $matches);
preg_match_all('((?<grp1>\d{3})\.|(?<grp1>\d{3})\,)', $str, $matches);
print_r($matches);
?>
在上面的代碼,我想所有的字符串作爲組數組稱爲grp1
,但它總是成爲錯誤PHP Warning: preg_match_all(): Compilation failed: two named subpatterns have the same name at offset ...
。如果我將其中一個組名更改爲grp2
,則效果良好。PHP - preg_match_all同一組,不同的基於模式
是否可以在preg_match_all中使用1組名而不是不同的組名?
更新
是有原因的,爲什麼我不能用這樣的事情/(?<grp1>\d{3})[.,]/
,這裏是清除問題的例子:
<?php
$str = '
src="img1.png"
src="img2.jpg"
url(img3.png)
url(img4.jpg)
';
preg_match_all('/src=\"(?<img1>(\w+)(.png|.jpg))\"|url\((?<img2>(\w+)(.png|.jpg))\)/', $str, $matches);
print_r($matches);
?>
我要採取一切,img2.jpg
,img3.png
和img4.jpg
分成數組組這樣的事情:
[img] => Array
(
[0] => img1.png
[1] => img2.jpg
[2] => img3.png
[3] => img4.jpg
)
你好,謝謝你的回答,但不幸的是,我覺得我會錯過我解釋什麼。請參閱上面我更新的問題。 – Crazenezz
好吧,我會盡力解決您的更新問題。 – anubhava
非常感謝您的解決方案,但您能向我解釋正則表達式的用途嗎?我是新來的這個東西。 – Crazenezz