2015-02-28 6 views
0
$text = "Wyse Dell WYSE"; 

$words = array_unique(explode(' ',$text)); 
$words = implode(' ',$words); 

echo $words; 

// output: Wyse dell WYSE 

Это решение работает с учетом регистра и сразу повторяет слова, но не всегда, как в примере выше. Мне нужно, чтобы он делал поиск без учета регистра.Удалить повторяющиеся слова (не чувствительные к регистру)

+1

Вы пытаетесь удалить чувствительность к регистру? Я немного не знаю, каков ваш вопрос. – user2027202827

+0

Да, правильно, мне нужно нечувствительное к регистру удаление. – 3zzy

ответ

3
$text = "Wyse Dell WYSE"; 

$words = array_iunique(explode(' ',$text)); 
$words = implode(' ',$words); 

echo $words; 



function array_iunique($array) { 
    return array_intersect_key(
     $array, 
     array_unique(array_map("StrToLower",$array)) 
    ); 
} 

Источник: case-insensitive array_unique

  1. array_map применяется strtolower ко всем значениям и возвращает массив со всеми значениями ниже обсаженных,
  2. array_unique удаляет все дубликаты от возврата array_map
  3. array_intersect_key возвращает массив, содержащий все записи $ Массив, который имеет ключи, которые присутствуют в возвращении array_unique
  4. Это предотвратит только первое существование слова и удалить другие

Более подробную информацию о функциях:

array_map: http://php.net/manual/en/function.array-map.php
array_intersect_key: http://php.net/manual/en/function.array-intersect-key.php
strtolowerhttp://php.net/strtolower

+4

Возможно, вы также хотите объяснить, что делает ваша функция – Rizier123

+0

да, это, скопировано оттуда, чтобы ответить на этот вопрос :) –

+0

@ Rizier123 Что, в свою очередь, похоже на комментарий в руководстве по php. И ни с каким хорошим объяснением того, что он делает именно :-( – jeroen

0

Попробуйте что-нибудь подобное.

$text = "Wyse Dell WYSE"; 

$words = array_unique(explode(' ',strtolower($text))); 
$words = implode(' ',$words); 

echo $words; 
+0

Спасибо, но он меняет все на нижний регистр, который нежелателен. :( – 3zzy

Смежные вопросы