首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用内部的方法替换preg

用内部的方法替换preg
EN

Stack Overflow用户
提问于 2014-01-08 16:43:27
回答 1查看 39关注 0票数 0
代码语言:javascript
复制
echo preg_replace("#\[map\](.+)\[\/map\]#e", '[link=maps.php/".$map_id[array_search("$1", $map_name)]."/$1/]$1[/link]', $text);

是我的尝试。

我想替换一下

代码语言:javascript
复制
[map]map_name[/map]

代码语言:javascript
复制
[link]maps.php/id/map_name[/link]

我有两个数组,$map_id$map_name。它们包含完全相同的项,项目用相同的键连接,例如:$map_id[123],ID是映射:$map_name[123]的ID。

我的preg_replace在返回时不能工作:Failed evaluating code: [link=maps.php/".in_array("ksz_luminous", $map_name)."/ksz_luminous/]ksz_luminous[/link]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-08 16:48:47

您不应该使用e标志。假设我使用了这个:

代码语言:javascript
复制
[map]",array())].shell_exec("evil command of evil").$map_id[array_search("[/map]

或者类似的东西。

不管怎样,试试这个:

代码语言:javascript
复制
echo preg_replace_callback("(\[map\](.+?)\[/map\])i",
    function($m) use ($map_id,$map_name) { 
        return "[link=maps.php/"
           .$map_id[array_search($m[1], $map_name)]
           ."/".$m[1]."/]".$m[1]."[/link]";
    }, $text);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21001528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档