PHP str_replace 无法给我想要的输出

标签 php string

我想替换特定位置的字符串。为此,我使用了 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/

相关文章:

php\r 和\n 一样吗?

php - 如何使用php和mysql返回多维数组中的多级类别

string - 当需要快速 (O(1)) 索引时,哪种 Haskell 字符串类型用于 Unicode 数据?

c - 当我更改字符数组时链表更改

java - 根据java中的模式拆分字符串 - 大写字母和数字

javascript - 错误消息 无法在 'appendChild' : parameter 1 is not of type 'Node' 上执行 'Node'

php - Cakephp 不同的

php - Excel 加载到 MySQL - 性能

使用智能字符串进行恒定时间字符串反转?

java - 正则表达式提取数字并用千位分隔符对它们进行分组