2017-08-02 8 views
0

ショートコードを持つCMSを変更しています。ショートコードは次のようになります。ショートコードの最初のオカレンスだけを置換する

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

CMSページに複数のショートコードが含まれる可能性があります。ユーザーが誤って同じショートコードを複数回使用する可能性があります。私の状況では、同じショートコードを複数回使用すると、2番目の項目が表示されず、JavaScriptエラーが発生しました。これは、CMSが使用していたためです。

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

これにより、2つの要素のような重複したコンテンツ要素がページに配置されました。 JavaScriptには問題がありました。私はその行をpreg_replaceを使うように変更しました。

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

マイ$ escapedSearchPatternは、次のようになります。

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

しかし、にpreg_replaceは、それがPAGE_CONTENTに挿入する際に$ myContent置換コンテンツ文字列を変更するようです。 1つの例では、datatables.jsテーブルがあり、1行の要素のそれぞれに$ searchStr(つまりショートコード)が配置されています。なぜpreg_replaceは期待どおりに動作しないのですか? PHPを使用してショートコードの最初のインスタンスを置き換えるにはどうすればよいですか?

+2

あなたが述べパラメータとして制限を設定することができますhttp://php.net/manual/en/function.preg-replace.php –

+0

これはカスタムCMSまたは既存の製品ですか? – Scuzzy

+0

@UlrikMcArdle:これを答えにする必要があります! – Toto

答えて

0

あなたが述べパラメータとして上限を設定することができます。http://php.net/manual/en/function.preg-replace.php

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

これは、置換コンテンツを変更するpreg_replaceの問題を解決しません。 – ermSO

関連する問題