2015-09-23 2 views
0

Я хотел бы заменить некоторые недопустимые символы, У меня есть массив, который содержит корреспонденцию:Заменить недопустимые символы

$map = array(
    "à" => "a", 
    "è" => "e", 
    "ì" => "i", 
    "ò" => "o", 
    "ù" => "u" 
); 

Я хотел бы использовать функцию str_replace($pattern, $replacement, $string), но я не могу прийти к выводу. Как я могу продолжить?

+2

Попробуйте 'str_replace (array_keys ($ map), array_values ​​($ map), $ string);'. –

+2

или просто, 'str_replace (array_keys ($ map), $ map, $ string);' – Viral

+2

Yup, good point. –

ответ

0

Решению, которое я нашел это использовать функцию strtr(string $str, array $arr).

Имея массив, как один, упомянутых выше:

$map = array(
    "à" => "a", 
    "è" => "e", 
    "ì" => "i", 
    "ò" => "o", 
    "ù" => "u" 
); 

Я просто сделать это:

$string = "àaaaàèììkkekeou"; 
$new_string = strtr($string, $map); 

С результатом: $new_string -> "aaaaaeiikkekeou"

Для дополнительной информации о функции: strtr()

0

Как насчет использования цикла for для обработки каждого индекса строковой переменной и применения функции замены для каждого?

theString = "whatever" 
String[] = theString.split(); 

for(int i=0; i<String[].length; i++){ 
    char tmp = String[i].toChar(); 

    if(map.containsKey(tmp)){ 
     char replace = map.getValue(tmp); 
     tmp = replace; 
     String[i] = tmp.toString(); 
    } 

} 

Просто помогая вам это продумать, этот код обычно не запускается.

0

Надеется, что это помогает

function sanitize($string) { 
    $string = str_replace(
     array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'), 
     array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'), 
     $string 
    ); 

    $string = str_replace(
     array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'), 
     array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'), 
     $string 
    ); 

    $string = str_replace(
     array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'), 
     array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'), 
     $string 
    ); 

    $string = str_replace(
     array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'), 
     array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'), 
     $string 
    ); 

    $string = str_replace(
     array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'), 
     array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'), 
     $string 
    ); 

    $string = str_replace(
     array('ñ', 'Ñ', 'ç', 'Ç'), 
     array('n', 'N', 'c', 'C',), 
     $string 
    ); 


    return strtolower($string); 
} 
Смежные вопросы