【发布时间】:2018-01-22 23:44:28
【问题描述】:
我有以下脚本将我的字符串中的[amazon region=com asin=1234567] 替换为getAffiliateLink("com","1234567") 以触发PHP 函数并显示特定的div:
$content = preg_replace_callback('/\[amazon region=([^\b]+) asin=([^\b]+)\]/', 'callback', $content);
function callback ($matches) {
print_r($matches);
return getAffiliateLink("$matches[1]","$matches[2]");
}
echo $content;
现在这可以完美运行.. 直到我的字符串中有多个 [amazon region=com asin=1234567] 实例,每个实例都有不同的 asin 号。
然后我得到以下打印:
Array (
[0] => [amazon region=com asin=B004QJ9458] [amazon region=com asin=B0080KWRI0]
[1] => com asin=B004QJ9458] [amazon region=com
[2] => B0080KWRI0
)
看看上面的输出,很明显这里出了点问题。如何更改我的代码,使其适用于特定字符串的不同实例?
【问题讨论】:
-
您的
+操作员很贪心,使用+?让他们不贪心。 -
@Sammitch 谢谢,这似乎返回了一个正确的数组。现在我的 PHP 函数为第一个实例执行,但返回下一个实例缺少参数的通知。仅在函数第一次正确触发时..
-
别在意我的最后一个回复,它现在完美运行!非常感谢,我学到了新东西!
-
@SenneVandenputte 你检查过我下面的答案了吗?
标签: php preg-replace preg-replace-callback