【发布时间】:2012-08-16 18:53:10
【问题描述】:
我有这个trimmer 函数,它递归地修剪数组中的所有值(人们无缘无故地放了很多空格!):
function trimmer(&$var) {
if (is_array($var)) {
foreach($var as &$v) {
trimmer($v);
}
}
else {
$var = trim($var);
}
}
trimer($_POST);
问题:我想添加新功能:我希望此功能也将键中的所有_(下划线)转换为空格。我知道如何转换密钥 (str_replace('_', ' ', $key)),但我很难让它以这种递归方式工作......
输入:
$_POST['Neat_key'] = ' dirty value ';
预期结果:
$_POST['Neat key'] = 'dirty value';
【问题讨论】:
-
更改键名可能很危险。假设
$_POST数组中有两个键,一个名为My Data,另一个名为My_Data。您必须弄清楚如何处理潜在的密钥冲突。此外,后面的逻辑可能依赖于来自$_POST的键与某些 HTML 控件匹配。如果您即时更改键,则该逻辑可能会中断。 -
Web 浏览器将 转换为 $_POST['Word_word']... 如果我有两个
Word word和Word_word,无论如何都会有冲突...