Question sur utf8 et preg replace

Petit nouveau ! | 1 Messages

22 avr. 2012, 02:24

je cherche à:

sélectionner les mots avec des diacritics ô, à, é, è... etc.. genre:
impot -> impôt

peut etre avec regex avec utf8.. google chrome le fait avec le francais.

tu peux voir ici:
http://pretp2p.com/education/article?ar ... rche=impot

les mots impôt ne sont pas sélectionner comme par exemple:

http://pretp2p.com/education/article?ar ... e=histoire

tu peux voir la sélection..

peut etre as tu deja la connaissance.. jai essayer avec:

preg_replace('/(' . preg_quote($bold, '/'). ')/u') . ')/i', '<span
STYLE="background: #fbec00;">$1</span>', $texte);

mais ca ne fonctionne pas, le u ne fonctionne pas

ViPHP
ViPHP | 1380 Messages

24 avr. 2012, 09:57

Le problème des accentués et des regex de PHP est souvent causé par des locales mal configurées. Que donne ce bout de code chez toi:
<!DOCTYPE html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<pre>
<?php
echo setlocale(LC_CTYPE, 0).PHP_EOL;
echo (int) preg_match('#.#', 'école', $out).PHP_EOL;
echo $out[0].PHP_EOL;
echo '<hr>';
echo setlocale(LC_CTYPE, 0).PHP_EOL;
echo (int) preg_match('#..#', 'école', $out).PHP_EOL;
echo $out[0].PHP_EOL;
echo '<hr>';
echo setlocale(LC_CTYPE, 'fr_BE.utf8').PHP_EOL;
echo (int) preg_match('#.#u', 'école', $out).PHP_EOL;
echo $out[0].PHP_EOL;

?>
</pre>
</body>
Veille à changer fr_BE.utf8 en une locale présente sur ton système. Si tu utilises linux, fais un locale -a pour trouver les locales unicode installée sur ta machine.
ripat