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

動作確認済み

$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 に答える
0

とを使用preg_replace()strtolower()てこれを実現できます。

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