php后向引用怎么带入到函数参数

WBOY
Freigeben: 2016-06-23 13:35:55
Original
1112 Leute haben es durchsucht

preg_replace('/{get_(\w+)}/',$arr[$1], $content);
Nach dem Login kopieren


$1为后向引用,我需要把匹配的 \w+ 作为参数,传入到自定义函数,或者作为数组的索引,该怎么实现呢


回复讨论(解决方案)

preg_replace_callback 可以回调函数,但是怎么把匹配到的,作为数组的索引,这个我找不到方法

preg_replace('/{get_(\w+)}/e','$arr["$1"]', $content);

$content = '{get_abc}';$arr['abc'] = 123;echo preg_replace('/{get_(\w+)}/e', '$arr["$1"]', $content);
Nach dem Login kopieren

扩展模式 e 表示 eval,表示将第二个参数当做 php 语句来执行
不过这种做法到了 php5.5 就废止了,因为动态解释 php 语句存在效率和安全的问题

合理的做法是使用 preg_replace_callback
下面开列 3 中写法
$content = '{get_abc}';$arr['abc'] = 123;echo preg_replace_callback('/{get_(\w+)}/', 'back', $content);function back($m) {  global $arr;  return $arr[$m[1]];}
Nach dem Login kopieren
$content = '{get_abc}';$arr['abc'] = 123;echo preg_replace_callback('/{get_(\w+)}/', create_function('$m', 'global $arr; return $arr["$m[1]"];'), $content);
Nach dem Login kopieren
$content = '{get_abc}';$arr['abc'] = 123;echo preg_replace_callback('/{get_(\w+)}/', function($m) use($arr) { return $arr["$m[1]"];}, $content);
Nach dem Login kopieren
显然第 3 种写法最清晰,但只在 php5.3 才开始支持

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage