1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/* ---------------------------------------
* 正規表現のpreg_grepと配列関数の例
*
* 作成: 2015.07.23 yoshi of CXMedia Inc.
* --------------------------------------- */
header("Content-type: text/plain; charset=UTF-8");
// 連想配列のテーブル
$input = array(
'a'=>'apple',
'b'=>'banana',
'c'=>'cherry',
'd'=>'dorian'
);
// 正規表現パターン:[a]+
$pattern = '/[a]+/';
echo "元の連想配列のテーブル\n";
print_r($input);
// 配列の添字「a」が1個以上あるものにマッチしない要素--array_keysの抽出
echo "配列の添字「a」が1個以上あるものにマッチしない要素--array_keysの抽出\n";
//PREG_GREP_INVERTを設定すると、正規表現パターンにマッチしない要素を返す
$out = pregGrepKeys($pattern,$input,PREG_GREP_INVERT);
print_r($out);
// 配列の値「a」が1個以上あるもの--array_valuesの抽出
echo "配列の値「a」が1個以上あるもの--array_valuesの抽出\n";
$out = pregGrepValues($pattern,$input);
print_r($out);
// --- array_keysの抽出するユーザー関数
function pregGrepKeys( $pattern, $input, $flags = 0 ){
// -- preg_grepを使用して、正規表現パターンに一致するものを抽出
// 注)$flags =PREG_GREP_INVERTのとき、一致しないものとなる
$keys = preg_grep( $pattern, array_keys( $input ), $flags );
$vals = array();
foreach ( $keys as $key ){
$vals[$key] = $input[$key];
}
return $vals;
}
// --- array_valuesの抽出するユーザー関数
function pregGrepValues( $pattern, $input, $flags = 0 ){
// -- preg_grepを使用して、正規表現パターンに一致する配列の値のものを抽出
$values = preg_grep( $pattern, array_values( $input ), $flags );
// キーと値を反転した配列を作成
$flip = array_flip($input);
$vals = array();
foreach ( $values as $value ){
$vals[ $flip[$value] ] = $value;
}
return $vals;
}
?>