在 sscanf() 中,%s 不会在点处停止匹配
这不起作用:
list($value) = sscanf('foo.bar','%s.bar');
echo $value; //foo.bar
虽然这有效:
list($value) = sscanf('foo bar','%s bar');
echo $value; //foo
非常感谢任何建议。 谢谢。
This doesn't work:
list($value) = sscanf('foo.bar','%s.bar');
echo $value; //foo.bar
While this does:
list($value) = sscanf('foo bar','%s bar');
echo $value; //foo
Any suggestions are really appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
%s
将贪婪地捕获字符,直到出现空格或字符串末尾。sscanf()
没有“惰性”模式。您可以使用基本(否定)字符类来捕获所有非点字符并防止过度捕获。
%s
will greedily capture characters until a whitespace or the end of the string. There is no "lazy" mode forsscanf()
.You can use a basic (negated) character class to capture all non-dot character and prevent over-capturing.
您可以使用 Explode 而不是 sscanf() 来完成您想做的事情。
you can use explode instead of sscanf() for what you want to do.
我认为这是设计使然。老实说,在这里使用
preg_match
很简单。I think it by design. It is trivial to use
preg_match
here, to be honest.