【发布时间】:2018-02-11 03:10:40
【问题描述】:
在我的网站上,我在正文中插入了一个项目创建的年份,并将其替换为“六年前”(或者不管它有多长)。
所以在我的内容中我有:
我们从 1998 年开始营业,并在 [2011] 年前制作了这种包装设计。
我正在尝试使用正则表达式将 2011 放入变量中以供以后搜索和替换,但无法弄清楚。每页只有一个实例。我可以搜索和替换,这只是我一直无法理解的正则表达式。
为了解决下面的 cmets - 年份是可变的,这就是我想要使用正则表达式的原因。
例子
$bodycontent = <p>We've been in business since 1998
and produced this logo design [2002] years ago.</p>
或
$bodycontent = <p>We've been in business since 1998
and produced this website design [2016] years ago.</p>
所以我将大括号中的年份放入一个变量中,正则表达式为 $then,从当前年份中减去它,得到 $age(由另一个函数转换为单词)
$bodycontent = str_replace("[".$then."]",$age,$bodycontent)
我试过了
preg_match("[\d{4}]",$bodycontent,$found);
但它返回第一个日期——而不是大括号中的日期。
【问题讨论】:
-
你不需要正则表达式只需
str_replace -
如果子字符串是可变的。
preg_replace_callback()将作为一个电话进行。或者,如果年份的可能性有些有限,您可以str_replace()使用一组查找和一组替换。请显示几个示例输入以显示可变性。您的编码尝试在哪里?