Skip to content

Instantly share code, notes, and snippets.

@bmartel
Last active August 29, 2015 14:03
Wild card array key/value searching and regex replace in keys.
<?php
class ArrayHelper
{
/**
* Provides wild card search for array keys.
*
* @param string $search
* @param array $arr
* @param bool $keyValue
* @return array
*/
public static function keyMatches($search, $arr, $keyValue = true)
{
$search = str_replace('\*', '(.*)?', preg_quote($search, '/'));
$result = preg_grep("/^{$search}$/i", array_keys($arr));
if ($keyValue) {
$result = array_intersect_key($arr, array_flip($result));
}
return $result;
}
/**
* Provides wild card search for array values.
*
* @param string $search
* @param array $arr
* @param bool $keyValue
* @return array
*/
public static function valueMatches($search, $arr, $keyValue = true)
{
$search = str_replace('\*', '(.*)?', preg_quote($search, '/'));
$result = preg_grep("/^{$search}$/i", array_values($arr));
if ($keyValue) {
$result = array_intersect($arr, $result);
}
return $result;
}
/**
* Performs a regex replace on array keys.
*
* @param string $value
* @param string $replacement
* @param $arr
* @return array
*/
public static function replaceInKey($value, $replacement, $arr)
{
$value = preg_quote($value);
$result = array_combine(preg_replace("/{$value}/i", $replacement, array_keys($arr)), $arr);
return $result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment