2014-07-08 1 views
0

J'ai une fonction de recherche PHP/Ajax qui renvoie tous les pays qui contiennent les caractères entrés dans une zone de texte. Tous ces pays sont répertoriés et les caractères donnés sont marqués en gras dans le pays dont le nom figure dans la liste.PHP preg_replace() différence minuscule et majuscule

Exemple Caractères donnés en zone de texte: "Af" qui reviennent Af ghanistan et du Sud Af rica - sans l'espace inbetween ofcourse

Maintenant, tous les noms de pays dans la base de données ofcourse commencer par un lettre majuscule. Mais

preg_replace()

ne peut pas trouver la différence entre les majuscules et les minuscules. Alors, quand je rentre « a » dans la zone de texte, il retournera Afgh un niste un n remarquez la première majuscule « A » non gras

Voici le code que je utilise

$display_name = preg_replace("/" . $search_string . "/", "<b>" . $search_string . "</b>", $result['Country_Name']); 
$display_url = ''; 

$output = str_replace('NameReplace', $display_name, $HTML); 
$output = str_replace('UrlReplace', $display_url, $output); 
echo($output); 

je peux "réparer" ce problème en ajoutant le "/ i" modificateur au preg_replace() Selon PHP.net il le fera comme suit:

i (PCRE_CASELESS) Si ce modificateur est défini, les lettres du motif correspondent aux lettres majuscules et minuscules.

Cela transforme les gras caractères dans les pays nom en minuscule ou majuscule en fonction des caractères dans la zone de texte

exemple: caractères donnés dans zone de texte: « A » retour "A FGH a niste a n " alors "un" retournera" un FGH un niste a n "encore s'il vous plaît ignorer l'espace blanc.

Comment puis-je faire que quand je rentre: "a" il retournera "A FGH un niste un n"?

Merci

Répondre

1

Modifier ceci:

$display_name = preg_replace("/" . $search_string . "/", "<b>" . $search_string . "</b>", $result['Country_Name']); 

à ceci:

$display_name = preg_replace("/(" . $search_string . ")/i", '<b>$1</b>', $result['Country_Name']); 
+0

S'il vous plaît lire toute ma question. Comme j'ai essayé ceci et cela pose un problème je ne sais pas comment réparer. –

+0

@Krijn van der Burg Désolé j'ai oublié quelque chose, j'ai mis à jour ma réponse. Essayez-le maintenant. –

+0

Je l'ai édité une deuxième fois, le() devrait être derrière et avant le slash /. –

0

Essayez ceci:

echo preg_replace("https://stackoverflow.com/a/i", "<b>\1</b>", "Afghanistan"); 

Sorties en HTML:

A FGH un niste un n

+0

Merci d'avoir essayé d'aider mais quelqu'un d'autre vous a battu et a résolu ma question et ce n'est pas ce que je cherchais. Mais merci beaucoup! –

Questions connexes