我想替换特定位置的字符串。为此,我使用了 str_replace()
PHP 函数,但之后我无法获得输出。在这里我向你展示我想要的东西。
$str = "hello 8-7-2015 world -12";
// here I want replace - with ' desh ' but in date only. That I have detected using check before character if space than it should be 'minus' otherwise it should be 'desh'.
$key = strpos($str, "-");
if($key !== false){
$a = substr($str, $key-1 , 1);
if($a != " "){
$str = str_replace("-","desh",$str);
}else{
$str = str_replace("-","minus",$str);
}
}
我得到的输出如下: hello 8 desh 7 desh 2015 world desh 12
。到处都有 desh
我想要负 12
。其他值都可以,不应更改。
表示特定位置的变化。
最佳答案
您的代码(带有 if
)不会在字符串中循环查找所有出现的情况,因此当所有出现的情况发生更改时,应该会向您发出警报标志。
它的作用是找到第一个出现的位置(前面没有空格),然后执行:
str_replace("-","desh",$str);
它替换字符串中的所有出现的地方。为了做你想做的事,你需要的是:
str_replace(" -"," minus",$str);
str_replace("-","desh",$str);
这将首先处理所有前面有空格的-
字符,将它们转换为“减号”
。
第二行将处理所有剩余的 -
字符,并将它们替换为 "desh"
。
顺便说一句,如果您这样做是为了能够“说出”单词(在文本转语音 (TTS) 程序的意义上),那么您可能需要单词两侧都有空格你正在添加。您只需进行很小的修改即可实现这一点:
str_replace(" -"," minus ",$str);
str_replace("-"," desh ",$str);
这可能会让您的 TTS 代码更轻松地处理这些单词。
关于PHP str_replace 无法给我想要的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30703580/