preg_replace问题
我想从以下位置匹配和提取变量: {{variable:int}}
- variable 可以是任何 az
- : 是分隔符
- int 将是一个整数 0-9
目前我有: preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
这只完成了一半的工作,我仍然需要按 :
进行分割。
谢谢你!
I'd like to match and extract variables from: {{variable:int}}
- variable would be anything a-z
- : is a separator
- int would be an integer 0-9
Curretly i have: preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
which does only half the job, i still have to split by :
.
Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要非贪婪匹配(
.*?
):preg_replace('!\{\{(.*?):(\d)\}\}!')
You need a non-greedy match (
.*?
):preg_replace('!\{\{(.*?):(\d)\}\}!')
如果你想提取名称/值,我想你想使用 preg_match。
If you want to extract the name/value, I think you want to use preg_match.
使用
$1将包含捕获的变量,$2将包含捕获的整数
解释
[a-zA-Z]+表示至少还有一个字母(小写或大写)
后跟一个“:”
后跟至少一位或多位数字 (0-9)
Use
$1 will contain the captured variable, $2 will contain the captured integer
Explanation
[a-zA-Z]+ means atleast one more alphabets (small or caps)
followed by a ":"
followed by atleast one or more digits (0-9)