2014-10-14 2 views
0

Я извлекаю данные из базы данных в том, что некоторые из массивов содержат такой результат.Как сопоставить как e, так и é в php

playa|beach|mar|isco 

Когда пользователь электронной или é.I хотите отобразить только «пляж» .Если типов пользователей я, или я я хочу, чтобы отобразить только «ISCO». Я использую этот код:

$indx=0; 
while($row = mysql_fetch_array($rc)){ 

    if (strpos($row['texto'],'|') !== false) { 

     $pieces = explode("|", $row['texto']); 
     foreach($pieces as $key => $one) { 
      if(strpos($one, $fincas) !== false) 
       $indx=$key; 
     } 
     $row['texto'] = $pieces[$indx]; 
    } 
} 

Когда пользователь «е» его отображающее правильно «пляж», но когда пользователь «é» его отображения «Playa».

В PHP я должен отображать массив, содержащий е или е (I или I)

+3

Вам нужно будет сначала нормализовать строку с помощью 'iconv' или' Normalizer :: normalize' (PHP 5.3). См. Вопрос [Замените umlauts ближайшим 7-битным эквивалентом ASCII в строке UTF-8] (http : //stackoverflow.com/q/158241/112968) – knittl

ответ

1

Прежде всего, вы должны убедиться, что вы получаете POST в стандартном формате.

Обеспечение:

  • в HTTP заголовок: Content-Type: Текст/html; кодировка = UTF-8
  • в HTML Руководитель:
  • в виде тега:

Затем, перед началом цикла, перевести $ Финкас в "нормализованной" ASCII:

iconv("utf-8","ascii//TRANSLIT",$fincas); 

Это должен это сделать.

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