首页 > 解决方案 > 用多个变体替换字符串

问题描述

我想替换字符串中的一些文本,但是,它有多种变化。

我有多个字符串要替换,我正在循环它以一一替换它..例如..

$string1 = 'select * from table where id = :id';
$string2 = 'select * from table where id =:id';
$string3 = 'select * from table where id =  :id';

等等...

我很想用“id in (:id)”替换“id = :id”。所以对于 $string1,结果应该是 ' select * from table where id in (:id)' 和其他字符串一样。

但是,每个变量都是不同的,这id = :id可能是id=:idid= :id......有些有不同的间距......

目前,我在下面使用这段代码,但没有意识到,一些变量有多个空格......

$sql = str_replace(array("=:id", "= :id"), " in (:id)", $string);

是否可以在不通过删除过多空格手动替换每个变量的情况下做到这一点?我试图避免手动执行此操作,因为我从数据库中获取这些变量,并且有些人会以过多的空格输入数据库,而我无法控制它。

标签: php

解决方案


您可以使用preg_replace替换它们,而不管它们包含多少空格:

$sql = preg_replace("/ *= *:id/", " in (:id)", $string);

您可以在此现场演示中试用。


推荐阅读