【发布时间】:2015-08-20 16:51:31
【问题描述】:
我试图理解 php 中 preg_replace 操作中正则表达式背后的逻辑,但我不明白。
我正在尝试截取width="560" 之类的字符串并将其替换为width="100%"。
整数值自然不是常数,所以我不能使用简单的 str_replace 调用。
我尝试使用preg_replace("/(\d)/", "100%", $input_lines); $input_lines = 'width="560"';
但我得到:width="100%100%100%"
我错过了一些关于递归的东西。 有什么线索吗?
编辑 社区回答后,我必须在我的帖子中添加一些规范。
我想要做的是采用 youtube 嵌入代码,例如
<iframe width="560" height="315" src="https://www.youtube.com/embed/_qvp9a1x2UM" frameborder="0" allowfullscreen></iframe>
将 560 替换为 100%,将 315 替换为计算值
【问题讨论】:
-
这里没有观察到递归行为。您的模式按顺序匹配每个数字,并且每个数字都替换为您的替换字符串。一个提示:如果您不使用任何反向引用,并且将其设置为整个模式(除非您使用
preg_split拆分),则无需使用捕获组。