PHP str_替换两个单词
我的代码在下面PHP str_替换两个单词,php,str-replace,Php,Str Replace,我的代码在下面 echo $type = str_replace(array('q','h','f'),array('Quarter','Half','Full'),$_POST['type']); 在上面的第$_POST['type']行中有这3个值 $\u帖子类型='q' $\邮政类型='h' $\邮政类型='f' 我想换一个 q与四分之一 h加一半 f带满 我的问题是$\u POST['type']='h' 上述代码的结果表示$type的值为HalFull 为什么会发生这种事 有什么
echo $type = str_replace(array('q','h','f'),array('Quarter','Half','Full'),$_POST['type']);
在上面的第$_POST['type']行中有这3个值
- q与四分之一
- h加一半
- f带满
str_replace
针对三个参数中的每一个连续执行
对于第一个参数,不替换任何内容
对于第二个参数,h
替换为Half
对于第二个参数,将Half
的f
替换为Full
因此,您最终得到的是HalFull
解决方案 有很多方法可以解决这个问题 最简单的解决方案是使用,并优化搜索条件:
echo $type = preg_replace(array('/^q/i','/^h/i','/^f/i'),array('Quarter','Half','Full'),'h');
问题
str_replace
针对三个参数中的每一个连续执行
对于第一个参数,不替换任何内容
对于第二个参数,h
替换为Half
对于第二个参数,将Half
的f
替换为Full
因此,您最终得到的是HalFull
解决方案 有很多方法可以解决这个问题 最简单的解决方案是使用,并优化搜索条件:
echo $type = preg_replace(array('/^q/i','/^h/i','/^f/i'),array('Quarter','Half','Full'),'h');
似乎它正在用
Half
替换h
,然后用Full
替换Half
的最后一个f
可能是,如果您可以提供一个regexp,该regexp只替换源字符串正好是一个字符的情况,那么它就可以工作
试试这个:
echo$type=preg\u replace(数组('/^q$/i','/^h$/i','/^f$/i'),数组('Quarter','Half','Full'),$POST['type']);
它可以工作它似乎在用
Half
替换h
,然后用Full
替换Half
的最后一个f
可能是,如果您可以提供一个regexp,该regexp只替换源字符串正好是一个字符的情况,那么它就可以工作
试试这个:
echo$type=preg\u replace(数组('/^q$/i','/^h$/i','/^f$/i'),数组('Quarter','Half','Full'),$POST['type']);
如果你改变更换的顺序,你会没事的:
echo $type = str_replace(array('q','f','h'),array('Quarter','Full','Half'),$_POST['type']);
…因为“f”产生“Full”,而“Full”中没有任何“h”,所以下一次更换是安全的
或者你也可以选择一种完全不同的方法,这样会更安全,而且我敢说会更可读和更易于维护
$translate = array(
'q' => 'Quarter',
'h' => 'Half',
'f' => 'Full'
);
echo $type = $translate[$_POST['type']];
如果您更改替换的顺序,您将可以:
echo $type = str_replace(array('q','f','h'),array('Quarter','Full','Half'),$_POST['type']);
…因为“f”产生“Full”,而“Full”中没有任何“h”,所以下一次更换是安全的
或者你也可以选择一种完全不同的方法,这样会更安全,而且我敢说会更可读和更易于维护
$translate = array(
'q' => 'Quarter',
'h' => 'Half',
'f' => 'Full'
);
echo $type = $translate[$_POST['type']];
不,不,先生。。。当$\u POST['type']='h'时,我只想要一半,我得到了一半。我只是想Half@GyandeepSharma当前位置我在回答中添加了一个解决方案或仅使用基本if-elseno no no no先生。。。当$\u POST['type']='h'时,我只想要一半,我得到了一半。我只是想Half@GyandeepSharma:我在回答中添加了一个解决方案,或者只使用基本的if-else为什么不稍微改变一下顺序?如果您按照“q”、“f”、“h”的顺序进行替换,那么我认为您会很好,因为“Full”中没有“h”…为什么不稍微更改一下顺序呢?如果您按照“q”、“f”、“h”的顺序进行替换,那么我认为您会很好,因为“Full”中没有“h”。。。