0

我刚刚开始学习正则表达式,我认为这可以使用正则表达式来完成,但无法找到合适的正则表达式匹配。情况如下:我想用各自的值填充数组中的键,但将所有内容都设为小写并下划线表示空格。

示例 PHP 数组:

array('' => 'Red Apple',
      '' => 'Blue Sky',
      '' => 'Circle/Earth');

输出应该是:

array('red_apple' => 'Red Apple',
      'blue_sky' => 'Blue Sky',
      'circle_earth' => 'Circle/Earth');

我能够使用 strtolower(),但无法使用 preg_replace()。我什至可以用正则表达式做到这一点吗?

谢谢。

4

3 回答 3

1

正如 slier 所说,它可以在没有 preg_replace 的情况下完成

这是一个片段

$new_key = strtolower(str_replace(array(' ', '/'), '_', $value)));

查看http://php.net/str_replace 快速介绍

str_replace(查找,替换,值);

find 可以是包含常见不需要的字符的数组,例如 array('-', '/', ' ', .. etc);

于 2013-01-23T20:01:03.350 回答
0

您可以使用preg_replace()andstrtolower()来实现这一点:

$key = strtolower(preg_replace(array('/[^a-z]+/i', '/\s/'), "_", $string));
于 2013-01-23T20:08:29.003 回答
0

确认工作

$array = array(
    'Red Apple',
    'Blue Sky',
    'Circle/Earth'
);

function nice_keys($key) {
    return strtolower(str_replace(array(' ', '/'), '_', $key));
}

$clean_keys = array_map('nice_keys', $array);
$new_array = array_combine($clean_keys, $array);

print_r($new_array);

参考

于 2013-01-23T20:06:01.717 回答