$str="123/456/789";
$str=preg_replace("/\//","\\",$str);
echo $str;
这个的目的就是将“/”,换成“\”;这个我试过了,能成功!$str="123\456\789";
$str=preg_replace("/\\/","\/",$str);
echo $str;
这个目的是将“\”,换成“/”,这个我试了一下,有错!
错误提示为preg_replace(): No ending delimiter '/'
有哪位大侠知道这个是怎么回事吗?下面一个我要怎么匹配才能成功呢
$str=preg_replace("/\//","\\",$str);
echo $str;
这个的目的就是将“/”,换成“\”;这个我试过了,能成功!$str="123\456\789";
$str=preg_replace("/\\/","\/",$str);
echo $str;
这个目的是将“\”,换成“/”,这个我试了一下,有错!
错误提示为preg_replace(): No ending delimiter '/'
有哪位大侠知道这个是怎么回事吗?下面一个我要怎么匹配才能成功呢
or
$str=preg_replace('/\\/',"\/",$str);
str_replace('/','\\',$str);
or
str_replace('\\','/',$str);
我比较喜欢后者
strtr($str, array('\' => '/'));
还有就是 你的匹配模式要这样写 $patthern = '/\\\/';
你照我的方法试下 我测试过 通过了
$str='123\456\789';
echo $str."<br />";
$str=preg_replace("/\\\/",'/',$str);
echo $str;
$replace双引号是可以的,但是前提是$str='123\456\789';这个地方换成$str="123\456\789"就有问题,单引号和双引号有这么大的区别吗?
下面关于为什么要使用“\\\”来表示一个‘\’,那是因为PHP解释器会把"\\\"解释成"\\",然后再经过正则解释成"\",因为要经过两次处理,所以就要使用三个反斜杠
$str=preg_replace("/\\\/","/",$str);
echo $str; //out 123/456/789这里需要注意两个问题
1、正则表达式 "/\\\/" 中 第一和第二个 / 结合成一个 \ ,这是 php 的字面代码的要求。传递给 preg_replace 的实际是 "/\\/"
也就是说如果你把 /\\/ 存入到文件或数据库里,然后读取到变量中作为规则串,就不会报错
2、同样的 $str="123\456\789"; 应写作 $str="123\\456\\789";
写作 $str="123\456\789"; 时,由于转义符的存在,字符串 $str 的内码实际是:
0x31 0x32 0x33 0x2e 0x07 0x38 0x39
与"123\\456\\789" 相距甚远
0x31 0x32 0x33 0x5c 0x34 0x35 0x36 0x5c 0x37 0x38 0x39