w7corp / easywechat

📦 一个 PHP 微信 SDK
https://easywechat.com
MIT License
10.26k stars 2.41k forks source link

添加自定义ScopingHttpClient降低使用复杂度 #2766

Closed hughcube closed 8 months ago

vercel[bot] commented 9 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
easywechat ✅ Ready (Inspect) Visit Preview 💬 Add feedback Dec 12, 2023 4:08am
hughcube commented 9 months ago

@overtrue 超哥, 这个是一个修饰符 PCRE_ANCHORED

A (PCRE_ANCHORED) 如果设置了这个修饰符,模式被强制为"锚定"模式,也就是说约束匹配使其仅从 目标字符串的开始位置搜索。这个效果同样可以使用适当的模式构造出来,并且 这也是 perl 种实现这种模式的唯一途径。

TheNorthMemory commented 9 months ago

foreach循环里使用preg_match,而且每次是从字符串开始位替换,效率应该不会很好。

"{{$regexp}}A" 这个可能也会有一些不太适应的地方,例如 $regexp =/[^/]+/; PHP则会翻译成 "{/[^/]+/}A",这可能并非设计目标,建议增加测试用例覆盖或者注释说明怎样去构造这个 $regexp 变量。

PS: 都已经设计成 模式匹配方式了,为啥不考虑把 "A" modifier 也声明进模式变量内呢,万一有诉求说:”期望顺序最多匹配到一次“,那这个 "A" 就制造麻烦了。

hughcube commented 9 months ago

@TheNorthMemory 性能问题倒是还好, 实际运行应该差距很少.
Symfony 的代码, 他推荐的是对一个完整的url 进行验证, 实际操作中也是会推荐这样.

模式放进 $regexp 也不是不可以, 实际上大部分的使用场景都不会关心这个

已经去掉了A模式, 现在应该没啥争议了