Closed hughcube closed 8 months ago
@overtrue 超哥, 这个是一个修饰符 PCRE_ANCHORED
A (PCRE_ANCHORED) 如果设置了这个修饰符,模式被强制为"锚定"模式,也就是说约束匹配使其仅从 目标字符串的开始位置搜索。这个效果同样可以使用适当的模式构造出来,并且 这也是 perl 种实现这种模式的唯一途径。
在foreach
循环里使用preg_match
,而且每次是从字符串开始位替换,效率应该不会很好。
"{{$regexp}}A"
这个可能也会有一些不太适应的地方,例如 $regexp =
/[^/]+/;
PHP则会翻译成 "{/[^/]+/}A"
,这可能并非设计目标,建议增加测试用例覆盖或者注释说明怎样去构造这个 $regexp
变量。
PS: 都已经设计成 模式匹配方式了,为啥不考虑把 "A" modifier
也声明进模式变量内呢,万一有诉求说:”期望顺序最多匹配到一次“,那这个 "A"
就制造麻烦了。
@TheNorthMemory
性能问题倒是还好, 实际运行应该差距很少.
看 Symfony
的代码, 他推荐的是对一个完整的url
进行验证, 实际操作中也是会推荐这样.
模式放进 $regexp
也不是不可以, 实际上大部分的使用场景都不会关心这个
已经去掉了A模式, 现在应该没啥争议了
The latest updates on your projects. Learn more about Vercel for Git ↗︎