我有以下格式的一系列字符串。
temp_low_warning
我正在使用此代码生成
警告,温度过低!
$str = "temp_low_warning";
$parts = explode("_",$str);
$return = ucfirst($parts[2]) . ", " . ucfirst($parts[0]) . " " . ucfirst($parts[1]) . "!";
使用正则表达式有更好的方法吗?我更关心表现;此脚本作为执行频繁执行的cron作业的一部分运行。
所以我想我的第一个问题是:
可以使用正则表达式完成吗?
第二个问题:
应该使用正则表达式吗?
答案 0 :(得分:3)
由于您的cron-job需要为每次调用启动php,因此性能很可能不会引起关注。正则表达式与爆炸性差异不会是显而易见的。
答案 1 :(得分:2)
我会保留你的代码。
如果你绝对想要重构它,我会将大写字母应用到$parts
来制作
明确它适用于所有数组项目。
$str = "temp_low_warning";
$parts = array_map('ucfirst',explode("_",$str));
$return = $parts[2] . ", " . $parts[0] . " " . $parts[1] . "!";
我会远离正则表达式来做类似的任务,建议进入php在线参考本身(性能和清晰度问题)
答案 2 :(得分:1)
该代码花了0.0003秒在我的机器上运行。您确定需要进一步优化吗?
关于你的问题,答案是否定的。
答案 3 :(得分:1)
没有大写:
preg_replace("/(\w+)_(\w+)_(\w+)/", "$3, $1 $2!", $string)
我不确定是否有一种简单的方法可以大写。
如果在循环中经常执行此命令,则使用正则表达式时性能可能会略有提高。但是,如此短的字符串应该不那么重要。