【问题标题】:PHP: Replace words within stringPHP:替换字符串中的单词
【发布时间】:2015-05-18 12:57:42
【问题描述】:

我有以下字符串:

@c24-blue: #005ea8; @c24-green: #737948;

现在我想将@c24-green 的定义替换为#fff。

我试过了:

$string = '@c24-blue: #005ea8; @c24-green: #737948;';
$string = preg_replace('/([@c24-green:]) (.*);/', '$1' . ' #fff;', $string);

结果应该是:

@c24-blue: #005ea8; @c24-green: #fff;

是否有解决方案来解决这个问题?

问候, 启

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    怎么样:

    $string = preg_replace('/(@c24-green:)[^;]+/', '$1 #fff', $string);
    

    【讨论】:

      【解决方案2】:

      从字符类中删除您的字符串"@c24-green:",以下应该可以工作..

      (@c24-green:) (.*);
       ^         ^
      
      $string = preg_replace('/(@c24-green:) (.*);/', '$1' . ' #fff;', $string);
      

      见DEMO

      编辑:如果你想让它通用..你可以使用以下:

      (@[^:]*:) ([^;]*);
      

      见DEMO

      【讨论】:

      • 对于 c24-green 它有效,但是如果它也适用于 c24-blue,我该如何定义正则表达式?比它只返回 @c24-blue: #fff;
      • 你的意思是你想让它成为通用的或者只是为了c24-green和c24-blue?
      • 至少应该是通用的。
      猜你喜欢
      • 2012-05-29
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多