【问题标题】:PHP - str_replace multiple symbolsPHP - str_replace 多个符号
【发布时间】:2014-08-27 17:48:19
【问题描述】:

我有以下字符串“Il-kelb ta Mariia jismu il-Bobo”

用户通常输入上面的句子。有时他们将句子输入为

"Il-kelb ta Mariia jismu il--Bobo" - i.e. double dashes OR
"Il---kelb ta Mariia jismu il---Bobo" - i.e. double dashes; or 
"Il-----------------------kelb ta Mariia jismu il-------Bobo" - i.e. double dashes; or 

我通常使用 str_replace 例如str_replace('--','-') 如果它的三个破折号是str_replace('---','-') 如果它的四个破折号是str_replace('----','-')

在某些情况下,它会回显——或——不管

我想知道如何制作一个不允许两个破折号相邻的函数,否则str_replace('----','-') 将用于无限组合。

如果它们彼此相邻,我想输出一个破折号。

【问题讨论】:

  • 您可以在迭代中将两个破折号替换为一个破折号,直到字符串没有发生任何变化。

标签: php


【解决方案1】:

使用preg_replace

preg_replace("/-{2,}/", "-", $string);

【讨论】:

    【解决方案2】:

    您可以通过这种方式使用简单的while 循环来做到这一点:

    while (strpos($string, "--") !== false)
      $string = str_replace("--", "-", $string);
    

    或者如果你打算使用正则表达式,你可以这样做:

    $string = preg_replace("/\-+/", "-", $string);
    

    【讨论】:

    • 我不确定(这就是我删除否决票的原因),但是如果- 的数量为偶数,while 循环不会起作用吗?
    • 不。它经历了一次迭代。你自己检查。因此,如果字符串中有---,则为--,在下一次迭代中,它为-。看看吧。
    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多