Вы должны взглянуть на preg_replace
.Пример (предполагается, что вы знаете, что вы делаете с параметрами):
echo preg_replace( '/\\{\\{\\s*module:(\w+)(,(\w+=\w+))?\\s*\\}\\}/',
'include(\'\\1?\\3\');',
'bla bla bla bla {{ module:projects,id=1 }} bla bla bla bla' );
В противном случае, если мои предположения о ваших параметрах и остальном верны, мое решение:
function replace_modules( $var ){
$stringparams = array_filter( explode( ',', substr( $var[2], 1 ) ) );
$getparams = array();
foreach($stringparams as $stringparam){
list( $key, $value ) = explode( '=', $stringparam );
$getparams[] = sprintf('$_GET[\'%s\']=\'%s\';',
addslashes( $key ),
addslashes( $value ) );
}
return sprintf( '<?php %sinclude(\'%s\') ?>',
implode( $getparams ), addslashes($var[1]) );
}
$a= preg_replace_callback( '/\\{\\{\\s*module:(\w+)((,\w+=\w+)*)\\s*\\}\\}/',
'replace_modules',
'bla bla bla bla {{ module:projects,id=1,test=hello }} bla bla bla bla' );
РЕДАКТИРОВАТЬ: Хорошо, теперь я думаю, что знаю, что вы хотите;вот оно:
function replace_modules( $var ){
$stringparams = array_filter( explode( ',', substr( $var[2], 1 ) ) );
foreach( $stringparams as $stringparam ){
list( $key, $value ) = explode( '=', $stringparam );
$_GET[$key] = $value;
}
ob_start();
include( $var[1].'.php' );
return ob_end_clean();
}
$a= preg_replace_callback( '/{{\\s*module:([^,]+)((,[^,=]+=[^,]*)*)\\s*}}/',
'replace_modules',
'bla bla bla bla {{ module:projects,id=1,test=hello }} bla bla bla bla' );