これは機能します:
例にはいくつかのダミー配列があります: $query
.
$query_string_parts
それは
foreach ($query as $query_keys => $query_string_parts)
{
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($query_string_parts, ':alpha');
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($result['segments']['query'][$query_keys], ':digit');
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($result['segments']['query'][$query_keys], ':word');
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($result['segments']['query'][$query_keys], ':alphanum');
}
他の方法では、BLA
$bla = somethingfunction($bla, 'case0');
$bla = somethingfunction($bla, 'case1');
$bla = somethingfunction($bla, 'case2');
$bla = somethingfunction($bla, 'case3');
このコードはごちゃごちゃしていてきれいではありません! こんなことはしたくない。
正規表現の置換は次のとおりです。
`
private static $regex_replace = array(':word' => '/^[\w]*$/',
':digit' => '/^[\d]*$/',
':alpha' => '/^[a-zA-Z]*$/',
':alphanum' => '/^[a-zA-Z0-9]*$/'
);
private static function replace_regex_by_key($input, $regex_loop_key)
{
return preg_replace('/'.$regex_loop_key.'/', static::$regex_replace[$regex_loop_key], $input);
}`
結果 (OK!):
前:
array(7) {
[0]=>
string(22) ":alpha:digit"
[1]=>
string(3) "abc"
後:
array(7) {
[0]=>
string(22) "/^[a-zA-Z]*$//^[\d]*$/"
[1]=>
string(3) "abc"
しかし!以下のコードは混乱していて、配列から呼び出してstatic::$regex_replace
変更したい:
以下のコードはコードではないはずであり、論理的には、これの代わりに好きではありません:
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($query_string_parts, ':alpha');
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($result['segments']['query'][$query_keys], ':digit');
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($result['segments']['query'][$query_keys], ':word');
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($result['segments']['query'][$query_keys], ':alphanum');
次のようにする必要があります。
foreach (static::$regex_replace as $key) {
$result['segments']['query'][$query_keys] = static::replace_regex_by_key($query_string_parts, $key);
}
しかし、再帰的なリターンはありません。おそらく演算子を使用しています&
が、クラスでは何が最善のアイデアですか?