preg_replace 和美元符号
preg_replace and dollar sign
preg_replace('/[^.]*$/','png','asdf.jpgea.jpg')
输出是asdf.jpgea.pngpng
,为什么最后有两个png
?
同时,
preg_replace('/\w$/','png','asdf.jpgea.jpg')
输出asdf.jpgea.jppng
.
*
是否影响 $
的行为方式?
*
(0 次或多次)不会影响 $
符号的行为方式,但您需要将其更改为 +
(1 次或多次)获得您期望的结果:
preg_replace('/[^.]+$/','png','asdf.jpgea.jpg');
本质上,*
导致 jpg
匹配 两次 而不是一次,因为 *
也什么都不匹配。
这背后的技术解释非常复杂,我不想把它全部打出来,所以这里有一个很好的 link 其他人解释的地方:
preg_replace('/[^.]*$/','png','asdf.jpgea.jpg')
输出是asdf.jpgea.pngpng
,为什么最后有两个png
?
同时,
preg_replace('/\w$/','png','asdf.jpgea.jpg')
输出asdf.jpgea.jppng
.
*
是否影响 $
的行为方式?
*
(0 次或多次)不会影响 $
符号的行为方式,但您需要将其更改为 +
(1 次或多次)获得您期望的结果:
preg_replace('/[^.]+$/','png','asdf.jpgea.jpg');
本质上,*
导致 jpg
匹配 两次 而不是一次,因为 *
也什么都不匹配。
这背后的技术解释非常复杂,我不想把它全部打出来,所以这里有一个很好的 link 其他人解释的地方: