【问题标题】:preg_replace replace colon and back slashpreg_replace 替换冒号和反斜杠
【发布时间】:2018-02-10 02:40:15
【问题描述】:

我正在努力实现以下目标:

$subject = 'string://example.com/';

$search1 = ':';
$search2 = '/';
$replace = '_';

期望的输出:

$string = string_example1.com_example.com_;

有没有办法通过 preg_replace 实现这一点?

$string =  preg_replace(':', $replace, array($subject));

我知道这是不正确的,但我需要删除斜杠和冒号并替换为下划线,并且无论它们放在一起,只用下划线替换它

谢谢

【问题讨论】:

  • preg_replace('/(:\/\/|\/)/','_',$subject);
  • 冒着迂腐的风险,您尝试替换正斜杠(或简单的斜杠),而不是反斜杠,后者向后倾斜到行首。值得指出这一点,因为很多人把它们搞混了,你的帖子标题可能会让更多人认为“/”是反斜杠。

标签: php preg-replace


【解决方案1】:

输入:

$subject = 'string://example.com/';

$string = str_replace('___', '_', preg_replace('/[:\/]/', '_', $subject));

输出:

string_example.com_

希望对你有帮助

【讨论】:

    【解决方案2】:

    我认为str_replace 会更方便,如果你想替换一个特定的字符,str_ireplace 替换字符数组

    编辑

    例子:

    $subject= str_ireplace(array(':','/'),'_', $subject);
    

    我认为会这样。

    【讨论】:

    • 这是一条评论。或者举个例子。
    【解决方案3】:

    试试这个。在您的模式中使用分隔符:

    preg_replace('/(:\/\/|/\{1})/', '_', $subject);
    

    【讨论】:

    • 谢谢这个替换但我可以只替换一个下划线我有: & / 两个一起
    • 现在它返回结果为string__example1.com_example.com_
    • preg_replace('/(:\/\/|\/)/','_',$subject);请更新此
    • 只有在:/:// 在一起时才更改?
    • 试试这个:preg_replace('/(:\/\/|/\{1})/', '_', $subject); 如果只有 1 个斜杠,它会更改 :// 和 '/`。
    【解决方案4】:

    那就是这样做:

    $subject = 'string://example.com/';
    $string = preg_replace('~://|/~', '_', $subject);
    echo $string,"\n";
    

    输出:

    string_example.com_
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2011-01-29
      • 2012-04-14
      • 2012-06-16
      • 1970-01-01
      • 2021-05-29
      • 2013-03-11
      相关资源
      最近更新 更多