仅替换第一次出现的短代码PHP

时间:2017-08-02 01:20:46

标签: php preg-replace str-replace shortcode

我正在修改包含短代码的CMS。短代码看起来像这样

[code]Total_Public_Activities id=1 type=table[/code]

CMS页面中可能包含多个短代码。用户可能会不小心使用相同的短代码。在我的情况下,不止一次使用相同的短代码导致第二项不出现并产生JavaScript错误。原因是CMS正在使用

str_replace( $searchStr, $myContent, $getCmsPage->page_content );

这导致重复的内容元素(如两个元素)放在页面上。 JavaScript存在问题。我将该行更改为使用preg_replace。

preg_replace( $escapedSearchPattern, $myContent, $getCmsPage->page_content );

我的$ escapedSearchPattern看起来像:

    /\[code\]Total_Public_Activities id=1 type=table\[\/code\]/

但是,preg_replace似乎在将$ myContent替换内容字符串插入page_content时修改它。在一个例子中,我有一个datatables.js表,并且在一行的每个元素中放置了$ searchStr(即短代码)。为什么preg_replace不能按预期工作?如何使用PHP替换短代码的第一个实例?

1 个答案:

答案 0 :(得分:0)

您可以将限制设置为第四个参数:http://php.net/manual/en/function.preg-replace.php

    nums = [23, 44, 65, 78, 87, 11, 33, 44, 3]
    for i in range(2, 7, 2):
        nums[i] //= 2 # here 2 is the constant 'k'
    print(nums)
    >>>    [23, 44, 32, 78, 43, 11, 16, 44, 3]