2 jiansva jiansva 于 2016.01.19 10:48 提问

3个回答

showbo
showbo   Ds   Rxr 2016.01.19 11:45
已采纳
 $url="http://www.hao123.com/down.php?pid=4014&Id={kk:0}&aaa={b:222}";
$arr=array(
'kk'=>1,
'b' =>2,
'c' => 3,
);
foreach ($arr as $k => $value) {
if(strstr("$url","$k:")){
$url=preg_replace("/\\{".$k.":\\d+\\}/",$value,$url);
}
}
echo $url;
jiansva
jiansva 回复无聊码农: 厉害,多谢指点!
2 年多之前 回复
showbo
showbo 回复jiansva: $url=preg_replace("/\\{[a-z]+:(\\d+)\\}/","$1",$url);,应该这样吧,按照分组。。php不是很会
2 年多之前 回复
jiansva
jiansva 如果是直接替换成:后面的内容呢?{a:0}替换成0,{b:222}替换成222
2 年多之前 回复
rui888
rui888   Ds   Rxr 2016.01.19 10:56

图片说明

js

 'http://www.hao123.com/down.php?pid=4014&Id={a:0}&aaa={b:222}'.replace(/\{a:0\}/,'1').replace(/\{b:222\}/,'2')
jiansva
jiansva   2016.01.19 11:21

如果a,b都是变量呢?
$url="http://www.hao123.com/down.php?pid=4014&Id={kk:0}&aaa={b:222}";
$arr=array(
'kk'=>1,
'b' =>2,
'c' => 3,
);
foreach ($arr as $k => $value) {
if(strstr("$url","$k")){
$url=preg_replace("/{.*?:.*?}/",$value,$url);
}
}
echo $url;

这样的话,都替换成一个了,http://www.hao123.com/down.php?pid=4014&Id=1&aaa=1,显然是错的,
应该是:http://www.hao123.com/down.php?pid=4014&Id=1&aaa=2;

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
VS里的正则表达式的替换技巧
VS里的正则表达式的替换技巧 以下的是VS2008/VS2010的替换方式,用   \1  来替换  {.*}     到了VS2012后,要用 $1 来替换  (.*)    hospitalID = Request.QueryString["hospital"]; departmentID = Request.QueryString["department"];
正则表达式匹配和替换
转自 :  正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScript等各种脚本语言都支持正则表达式。下面整理一些常用的正则表达式。 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例
正则表达式之匹配切割替换获取
/* * 正则表达式:符合一定规则的表达式 * 作用:用于专门操作字符串 * 特点:用一些特定的符号来表示代码的操作,简化书写 * 所以学习正则表达式就是学习一些特定的符号的使用 * 好处:可以简化对字符串的复杂操作 * 弊端:符号定义越多,正则越长,阅读性越差 * * 具体操作功能: * 1.匹配:String类中的matches()方法 * ma
正则表达式的部分替换 $1~$99
来源于js,但是同样适用于java,关于正则表达式的介绍不多赘述。 主要说明一下正则表达式的部分替换。 比如要替换字符串“我是程序员”里面的“程序员”,替换为“工程师”。直接模式匹配是可以的,但是如果更加复杂就难了。 使用正则,可以做到。如 原始字符串:我是程序员 正则:(.*)(程序员)(.*) 替换为:$1工程师$3如上即可,其中$1和$3分别代表第1个和第3个括号内匹配到的内容。嵌
正则表达式的替换技巧
【1】 正则表达式应用——替换指定内容到行尾 【2】 正则表达式应用——数字替换 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】 正则表达式应用——替换带有半角括号的多行 【5】 正则表达式应用——删除空行 【6】 正则表达式应用——实例应用 【1】正则表达式应用——替换指定内容到行尾
eclipse巧用正则表达式替换
在工作中,经常碰到重构代码,有些事情明明很简单,但要改的东西太多了,重复工作量太大,所以学点技巧是灰常有用的    首先在Person.java中有这些静态常量,注意至少有40多个静态常量  Java代码   ...       public static final String PREFERENCE_HIDE_HELP_BLOG    = "PREFERENCE_H
Notepad++的正则表达式替换和替换
源地址:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_func_regex_replace.html 3.4. Notepad++的正则表达式替换和替换 对于替换功能,一般的文本编辑器,都具有此功能,但是对于高级的正则表达式替换,则很多都不支持。而此处Notepad++支持此
详解shell脚本(八)——正则表达式和文本替换
正则表达式 #IP地址 [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} [0-9]或[:digit:]匹配数字0~9。{1,3}匹配1到3个数字,.匹配”.”。 表 4-1: 正则表达式 描述 示例 - 行起始标记 -tux匹配以tux起始的行 ...
正则表达式部分替换
来源于js,但是同样适用于Java,关于正则表达式的介绍不多赘述。  主要说明一下正则表达式的部分替换。  比如要替换字符串“我是程序员”里面的“程序员”,替换为“工程师”。直接模式匹配是可以的,但是如果更加复杂就难了。  使用正则,可以做到。 如  原始字符串:我是程序员  正则:(.*)(程序员)(.*)  替换为:$1工程师$3 如上即可,其中$1和$3分别代表第1个
正则表达式替换指定位置的字符串
public string GetRePlaceStr(string str, string pattern, string newstr, int index=1) { Regex reg = new Regex(pattern); //查询匹配数量 var t = reg.Matches(str);