2016-11-11 2 views
0

次の問題を抱えて私は数時間立ち往生しています。私はショートコード[plugin-pluginname]を使ってプラグインを有効にする自分のCMSを手に入れました。今私はそのショートコード内のグループを割り当て、後で特定のIDを選択するクエリの変数としてインクルード一度ファイルで使用されます。preg_splitで正規表現を使用して別の値を取得する

瞬間に、私は、次のコードを持って:

$regex = '~\[plugin-([^]]+)]~'; 
     $content_one = htmlspecialchars_decode($page['content_one']); 
     $parts = preg_split($regex, $content_one, -1, PREG_SPLIT_DELIM_CAPTURE); 

     foreach($parts as $k => $v){ 
      if($k & 1) 
       include_once('plugins/'.$v.'/'.$v.'.php'); 
      else 
       echo htmlspecialchars_decode($v); 
     } 

[plugin-testplugin](例としてtestplugin)があり、その特定のファイルを含む場合、これはチェックします。今私はこのような何かを書いてほしい[plugin-testplugin 2]上記のコードだけでなく、もちろん動作しますが、数値は変数に格納されているクエリに使用することができますSELECT * FROM 'database' WHERE 'group' = "'.$var_from_shortcode.'"

これに対処し、問題は歓迎です!

+0

この場合、 'preg_split'の代わりに' preg_replace_callback'を使うことを考えてください。 –

+0

私はpreg_replace_callbackが答えかもしれないと思いますが、そのチュートリアルはちょっと難しいです。私は外出しているのか分からないが、今試してみよう! – Saypontigohe

+0

あなたが考えるようにそれほど難しいことではありません、前に1つか2つの簡単なテストを試してみてください。 –

答えて

0

this regexを使用して、グループ1の値を変数に保存できますか?

\[plugin-[A-Za-z ]*(\d+)?\] 

それとも[plugin-testplugin 2]がそれに番号を見つけるために\d*を使用見つけるために、この正規表現を使うのか?

+0

foreachループを停止せずに、1つの変数内の数字だけを取得するにはどうしたらいいですか?私が試してみると、ループを止めるか、変数を保存しません。 – Saypontigohe

+0

あなたは変数を同じスコープで宣言しましたか?あなたがforeachループの外でそれを読んでほしいなら、私はそれが破壊されないように変数を宣言しなければならないと思います。 –

+0

各ループには複数の '[shortcode]'が存在する可能性があるので、それらをすべて取得するには、それらを正しくループする必要がありますか? – Saypontigohe

関連する問題