:
$string = '{{ module:projects,id=1 }}';
$string = preg_replace('/{{ module:([^,]+),id=([0-9]+) }}/', 'include(\'$1.php?id=$2\')', $string);
// $string == include('projects.php?id=1')
注:あなたは、実際の端にクエリ文字列を持つファイルを含めることはできません。 PHPは 'projects.php?id = 1'という名前のファイルを探します。
preg_match_all('/{{ module:([^,]+),id=([0-9]+) }}/', $string, $matches);
foreach ($matches[1] as $key => $filename) {
// set $id before including the file. you could optionally set $_GET['id'].
$id = $matches[2][$key];
include($filename . '.php');
}
複数のパラメータをサポートするには、次のファイルを取得し、実際にそれを含めること
。 Matmarbon'sに似ていますが、よりコンパクトで、パラメータ値が\ wに従うと仮定せず、値をエスケープしませんが、スペーシング(/ s *)の変動の余地も少なくなります。
preg_match_all('/{{ module:([^,]+)((,[^=]+=[^,}]+)*) }}/', $string, $matches);
foreach ($matches[1] as $key => $filename) {
foreach (explode(',', trim($matches[2][$key], ', ')) as $vars) {
list($k, $v) = explode('=', $vars);
$_GET[$k] = $v;
}
// then this:
include($filename . '.php');
// or, to replace content:
ob_start();
include($filename . '.php');
$contents = ob_get_contents();
ob_end_clean();
$string = str_replace($matches[0][$key], $contents, $string);
}
こんにちは私はparamsとTGIFでやっていることを知っていると思うのですが、私はこれをもっと難しくしていると思います。私は私の文字列をbla bla bla {{projects、1}} bla bla bla私はaa projects.phpを持っています。私は1のIDを印刷したいので、私はbla bla bla {{projects、1}} bla bla blaを作成し、実際にはbla bla bla bla bla blaを印刷します。なぜなら、何とか私は文字列の真中に1を印刷したproejcts.phpを含んでいたからです。 – user875293
@ user875293私は今それを得たと思います! (編集を参照) – Matmarbon