php - 用多个变体替换字符串
问题描述
我想替换字符串中的一些文本,但是,它有多种变化。
我有多个字符串要替换,我正在循环它以一一替换它..例如..
$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=:id
或id= :id
......有些有不同的间距......
目前,我在下面使用这段代码,但没有意识到,一些变量有多个空格......
$sql = str_replace(array("=:id", "= :id"), " in (:id)", $string);
是否可以在不通过删除过多空格手动替换每个变量的情况下做到这一点?我试图避免手动执行此操作,因为我从数据库中获取这些变量,并且有些人会以过多的空格输入数据库,而我无法控制它。
解决方案
您可以使用preg_replace替换它们,而不管它们包含多少空格:
$sql = preg_replace("/ *= *:id/", " in (:id)", $string);
您可以在此现场演示中试用。
推荐阅读
- java - 将二维数组与扫描仪和 if 语句相结合
- python - 使用 Anaconda 在 Windows 上安装 TensorFlow 2.2
- scala - 如何持续使用来自 Apache Pulsar 的消息?
- arm - 如何在 STM32F4 的 keil uvision 5.30 中“不支持命令”
- python - 有没有办法让我们改变填充颜色?
- java - 我复制了完全相同的代码,但我的不起作用
- c# - foreach 循环变量抛出 NullReferenceException 但 Enumerable 不为空
- reactjs - 使用 Typescript 的 useEffect 中的清理功能
- design-patterns - 是否可以使用 DbParameter 发送 tvp 参数
- java - 使类不可变时处理可变字段的最佳方法