下面这个正则表达式是进行替换的,可以正常运行 表达式:/<\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\}>/i
替换串:<?php echo $this->fft_vars["${1}"]; ?>
例:页面中放入这个“<{ $user }>|”,运行后可替换为“<?php echo $this->fft_vars["user"]; ?>”现我想修成这样替换:
例:页面中放入这个“<{ $user[`id`] }>|”,运行后可替换为“<?php echo $this->fft_vars["user"]['id']; ?>”于是我修改了一下为:
表达式:/<\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\[\`([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)?\`\])\s*\}>/i
替换串:<?php echo $this->fft_vars["${1}"]; ?>可运行结果确是:
页面中放入“<{ $user[`id`] }>|”,运行后替换为“<?php echo $this->fft_vars["user"]; ?>”我的要求为如果$user后面没有[`id`]则替换为<?php echo $this->fft_vars["user"]; ?>,如果后面有[`id`],则这个[`id`]应替换成['id'],也就是中间的id不变,把[`和`]替换为['和'],请高手帮忙,谢谢
替换串:<?php echo $this->fft_vars["${1}"]; ?>
例:页面中放入这个“<{ $user }>|”,运行后可替换为“<?php echo $this->fft_vars["user"]; ?>”现我想修成这样替换:
例:页面中放入这个“<{ $user[`id`] }>|”,运行后可替换为“<?php echo $this->fft_vars["user"]['id']; ?>”于是我修改了一下为:
表达式:/<\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\[\`([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)?\`\])\s*\}>/i
替换串:<?php echo $this->fft_vars["${1}"]; ?>可运行结果确是:
页面中放入“<{ $user[`id`] }>|”,运行后替换为“<?php echo $this->fft_vars["user"]; ?>”我的要求为如果$user后面没有[`id`]则替换为<?php echo $this->fft_vars["user"]; ?>,如果后面有[`id`],则这个[`id`]应替换成['id'],也就是中间的id不变,把[`和`]替换为['和'],请高手帮忙,谢谢
参考
$p = '/<\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)((\[`[^`]+`\])*)\s*\}>/ie';$s = '<{ $user[`id`][`id2`][`id3`] }>|';echo preg_replace($p,"template_var('$1','$2','$3')",$s);function template_var( $_1,$_2)
{
$_2 = str_replace(array('[`','`]'),array('["','"]'),$_2);
return '<'.'?php echo $this->fft_vars["'.$_1.'"]'.$_2.'; ?'.'>';
}
$s = '<{ $user[`id`] }>';
echo preg_replace_callback($p,create_function ('$qs','$str=$qs[1];if(count($qs)==3){$str.=\'[\\\'\'.$qs[2].\'\\\']\';}return $str;'),$s);
|这个是啥东西 只考虑了 a-zA-Z0-9_