【发布时间】:2013-12-11 22:35:22
【问题描述】:
我四处搜索,找不到针对这种特定情况的简单解决方案。我不是 PHP 专业人士,我还在学习。
我正在对以文本形式写入的数字执行字符串搜索和替换,以将它们转换回数字。一个小例子如下所示:
$n_0='twenty one'; $n_1='twenty two'; $n_2='twenty three'; $n_3='twenty four'; $n_4='twenty five'; $n_5='twenty six'; $n_6='twenty seven'; $n_7='twenty eight'; $n_8='twenty nine'; $n_9='thirty one';
$r_0='21'; $r_1='22'; $r_2='23'; $r_3='24'; $r_4='25'; $r_5='26'; $r_6='27'; $r_7='28'; $r_8='29'; $r_9='31';
$search = array($n_0, $n_1, $n_2, $n_3, $n_4, $n_5, $n_6, $n_7, $n_8, $n_9, $n_10, $n_11, $n_12, $n_13, $n_14, $n_15, $n_16, $n_17, $n_18, $n_19, $n_20, $n_21, $n_22);
$replace = array($r_0, $r_1, $r_2, $r_3, $r_4, $r_5, $r_6, $r_7, $r_8, $r_9, $r_10, $r_11, $r_12, $r_13, $r_14, $r_15, $r_16, $r_17, $r_18, $r_19, $r_20, $r_21, $r_22);
$string = str_ireplace($search, $replace, $string);
有没有办法定义一个“单一”的 PHP 变量,以便找到所有给定的条件?
例如:
Search for: $n_0='twenty???one';
Replace with: $r_0 = '21';
其中 ??? 是介于“二十”和“一”之间的通配符代码,可以使其适用于以下所有搜索案例。
搜索:
$n_0='twenty one';
$n_0='twenty, one';
$n_0='twenty,one';
$n_0='twenty-one';
$n_0='twenty:one';
$n_0='twenty_one';
$n_0='twenty*one';
$n_0='twenty(one';
$n_0='twenty)one';
$n_0='twentyone';
提前致谢。
【问题讨论】:
-
使用
preg_replace而不是str_ireplace,并使用带有通配符的正则表达式。 -
@Barmar 怎么做?示例会有所帮助。
-
这似乎是一个非常琐碎的正则表达式,但我还是发布了一个答案。