在字符串中查找多个金额并用 <span> 换行
Find multiple amounts in string and wrap with <span>
我想在字符串中找到任何金额并用 span 标签将其包装起来。
例如我想编辑这个字符串:
Save when you spend 0.
进入这个:
Save <span></span> when you spend <span>0.</span>
这是我目前得到的:
$the_text = "Save when you spend 0.";
if (preg_match('/(?<=$)\d+(\,\d+)?\b/', $the_text, $regs)) {
foreach ($regs as $amount) {
$offer_text = str_replace("$","<span>$",$offer_text);
$offer_text = str_replace($amount,$amount."</span> ",$offer_text);
}
}
只要字符串中只有一美元金额,或者字符串包含具有不同整数的多个美元金额,这对我都适用。但在这种特殊情况下,代码输出以下内容:
Save <span></span> when you spend <span></span>0.
关于如何改进代码以捕获所有情况的任何想法?
我不是 PHP 专家,但当我摆弄它时,我只是使用了:
$\d+(?:,\d+)?\b
并替换为<span>[=13=]</span>
。看一个在线的 demo
$\d+
- 美元符号和 1+ 位数字。
(?:,\d+)?
- 可选的非捕获组以匹配逗号和 1+ 位数字。
\b
- 单词边界。
<?php
$the_text = "Save when you spend 0.";
echo preg_replace('/$\d+(?:,\d+)?\b/', '<span>[=11=]</span>', $the_text);
?>
Save <span></span> when you spend <span>0</span>.
我想在字符串中找到任何金额并用 span 标签将其包装起来。
例如我想编辑这个字符串:
Save when you spend 0.
进入这个:
Save <span></span> when you spend <span>0.</span>
这是我目前得到的:
$the_text = "Save when you spend 0.";
if (preg_match('/(?<=$)\d+(\,\d+)?\b/', $the_text, $regs)) {
foreach ($regs as $amount) {
$offer_text = str_replace("$","<span>$",$offer_text);
$offer_text = str_replace($amount,$amount."</span> ",$offer_text);
}
}
只要字符串中只有一美元金额,或者字符串包含具有不同整数的多个美元金额,这对我都适用。但在这种特殊情况下,代码输出以下内容:
Save <span></span> when you spend <span></span>0.
关于如何改进代码以捕获所有情况的任何想法?
我不是 PHP 专家,但当我摆弄它时,我只是使用了:
$\d+(?:,\d+)?\b
并替换为<span>[=13=]</span>
。看一个在线的 demo
$\d+
- 美元符号和 1+ 位数字。(?:,\d+)?
- 可选的非捕获组以匹配逗号和 1+ 位数字。\b
- 单词边界。
<?php
$the_text = "Save when you spend 0.";
echo preg_replace('/$\d+(?:,\d+)?\b/', '<span>[=11=]</span>', $the_text);
?>
Save <span></span> when you spend <span>0</span>.