# [php] PCRE et UTF8 (résolu)

## igguk

Bonjour,

J'essaye d'installer un dotclear 2.0 beta 7 sur ma gentoo mais je rencontre un problème, l'installation ne veut pas continuer car, il me répond :

 *Quote:*   

> DotClear ne peut pas être installé.
> 
>     * Le moteur d'expressions rationnelles PCRE ne gère pas les chaînes UTF-8.

 

J'ai cherché dans les USE de php, d'apache et je ne comprend pas ce qu'il faut faire pour corriger ce problème....

Le test est simple :

```
<?php

$pregutf8 = preg_match("/\xf8\xa1\xa1\xa1\xa1/u", "\xf8\xa1\xa1\xa1\xa1");

echo 'preg utf8: '.($pregutf8 ? 'yes' : 'no');

?>
```

Sur ce test j'ai toujours :

 *Quote:*   

> Warning: preg_match() [function.preg-match]: Compilation failed: invalid UTF-8 string at offset 0 in test.php on line 2
> 
> preg utf8: no

 

Avez vous une idée, une piste ?

Merci.Last edited by igguk on Mon Oct 01, 2007 3:39 pm; edited 1 time in total

----------

## igguk

Pas d'idées ?

J'ai l'impression que c'est le PCRE (7.3 2007-08-28 ) compilé avec PHP(5.2.4_p20070914-pl2)  qui n'est pas UTF8.

Si vous avez une version moins récente, pouvez vous faire mon petit test ?

[edit]

Par exemple sur la même gentoo, PHP 4 (4.4.8_pre20070816-pl0) compilé avec PCRE (7.0 18-Dec-2006) donne une réponse positive sur mon test.

[/edit]

[edit_bis]

Un petit downgrade en PHP 5.2.4-pl2 résoud mon problème, PCRE(7.2 2007-06-19)  supporte UTF8.

[/edit_bis]

Merci à tous.

----------

## truc

Merci à toi pour le feed back, même si ça pouvait en avoir l'air tu n'étais pas seul!  :Smile: 

----------

## igguk

De rien, c'est normal, je poste pas beaucoup mais trouve beaucoup d'infos dans ce forum.

Ca ressemble à une caractéristique (bug ?) du paquet, mais je suis pas assez calé pour le démonter.

----------

## anigel

Même souci ici... Et pour être franc, je ne suis pas très féru de technologies web : je capte rien à ce que je bidouille !

Avec php-5.2.5 et libpcre-7.4-r1 ça foire. idem avec libpcre-7.3 d'ailleurs. Je vais finir par y passer toutes les versions de la création... Je ne me sens pas de faire un downgrade du php, on a déjà bien assez de soucis de sécurité avec ce langage  :Wink: . Je continue de chercher...

 :Laughing: 

----------

## anigel

Je crois que je vais devenir complètement dingue...

J'installe libpcre, en version 7.4, avec php-5.2.5 :

```
equery l php

[ Searching for package 'php' in all categories among: ]

 * installed packages

[I--] [  ] dev-lang/php-5.2.5 (5)

equery l libpcre

[ Searching for package 'libpcre' in all categories among: ]

 * installed packages

[I--] [ ~] dev-libs/libpcre-7.4 (3)
```

pcretest -C me confirme qu'il s'agit bien de la version 7.4 :

```
pcretest -C

PCRE version 7.4 2007-09-21
```

Pourtant php semble continuer d'utiliser l'ancienne version (il a été recompilé après pcrelib). Voici ce que dit la section PCRE de ma page php_info :

```
PCRE Library Version    7.3 2007-08-28
```

Je vais craquer, je sens que je vais craquer xD ! Quelqu'un a une idée ? Un sort à lancer, un truc à brûler ? N'importe quoi fera l'affaire !

----------

## guilc

Heu, qu'on m'arrete si je dis uen connerie, mais il me semble que php utilise sa propre version de la libpcre (d'ailleurs libpcre n'est meme pas une dépendance de php !)

Ceci explique cette divergence de version !

----------

## anigel

/suicide

----------

## NEOxAKIRA

même problème et apperement toujours pas résolu

```
Erreurs :

DotClear ne peut pas être installé.

    * Le moteur d'expressions rationnelles PCRE ne gère pas les chaînes UTF-8.
```

```

Gentoo neoakira # equery l php

[ Searching for package 'php' in all categories among: ]

 * installed packages

[I--] [  ] dev-lang/php-5.2.5-r1 (5)

Gentoo neoakira # eix dev-lang/php

[I] dev-lang/php

     Available versions:  

        (4)     [M]4.4.8_pre20070816

        (5)     5.2.4_pre200708051230-r2 5.2.5 5.2.5-r1

        {adabas apache2 bcmath berkdb birdstep bzip2 calendar cdb cgi cjk cli concurrentmodphp crypt ctype curl curlwrappers db2 dbase dbmaker dbx debug discard-path doc empress empress-bcs esoob exif expat fastbuild fdftk filepro filter firebird flatfile force-cgi-redirect frontbase ftp gd gd-external gdbm gmp hash hyperwave-api iconv imap informix inifile interbase iodbc ipv6 java-external java-internal json kerberos ldap ldap-sasl libedit mcal mcve memlimit mhash ming mnogosearch msql mssql mysql mysqli ncurses nls oci8 oci8-instant-client odbc oracle7 overload pcntl pcre pdo pfpro pic posix postgres qdbm readline recode reflection sapdb session sharedext sharedmem simplexml snmp soap sockets solid spell spl sqlite ssl suhosin sybase sybase-ct sysvipc threads tidy tokenizer truetype unicode wddx xml xmlreader xmlrpc xmlwriter xpm xsl yaz zip zip-external zlib}

     Installed versions:  5.2.5-r1(5)(02:21:48 25.12.2007)(apache2 berkdb cli crypt ctype curl ftp gdbm iconv imap mysql ncurses nls pcre readline reflection session simplexml sockets spell spl ssl truetype unicode xml xmlreader xsl zlib -adabas -bcmath -birdstep -bzip2 -calendar -cdb -cgi -cjk -concurrentmodphp -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -empress -empress-bcs -esoob -exif -fastbuild -fdftk -filter -firebird -flatfile -force-cgi-redirect -frontbase -gd -gd-external -gmp -hash -inifile -interbase -iodbc -ipv6 -java-external -json -kerberos -ldap -ldap-sasl -libedit -mcve -mhash -msql -mssql -mysqli -oci8 -oci8-instant-client -odbc -pcntl -pdo -pic -posix -postgres -qdbm -recode -sapdb -sharedext -sharedmem -snmp -soap -solid -sqlite -suhosin -sybase -sybase-ct -sysvipc -threads -tidy -tokenizer -wddx -xmlrpc -xmlwriter -xpm -yaz -zip -zip-external)

     Homepage:            http://www.php.net/

     Description:         The PHP language runtime engine: CLI, CGI and Apache2 SAPIs.

Gentoo neoakira # equery l libpcre

[ Searching for package 'libpcre' in all categories among: ]

 * installed packages

[I--] [ ~] dev-libs/libpcre-7.4-r1 (3)

Gentoo neoakira # eix pcre

[I] dev-libs/libpcre

     Available versions:  (3)  6.6 (~)7.1 (~)7.2 7.3 7.3-r1 7.4 (~)7.4-r1

        {+cxx doc unicode}

     Installed versions:  7.4-r1(3)(22:38:10 21.11.2007)(cxx unicode -doc)

     Homepage:            http://www.pcre.org/

     Description:         Perl-compatible regular expression library

Gentoo neoakira # pcretest -C

PCRE version 7.4 2007-09-21

Compiled with

  UTF-8 support

  Unicode properties support

  Newline sequence is LF

  \R matches all Unicode newlines

  Internal link size = 2

  POSIX malloc threshold = 10

  Default match limit = 10000000

  Default recursion depth limit = 8192

  Match recursion uses stack

```

et dans phpinfo() !

```

pcre

PCRE (Perl Compatible Regular Expressions) Support    enabled

PCRE Library Version    7.3 2007-08-28

```

comme l'a dit guilc, "php utilise sa propre version de la libpcre", donc comment activer l'UTF-8 pour libpcre de php ? 

Merci

----------

## anigel

Bonsoir,

Pour ma part j'ai choisi l'option violente : j'ai "commenté" les 2 lignes du test en question dans le script d'install de dotclear-2. Depuis je fais des backups hyper-réguliers, mais je n'ai pour l'instant rencontré aucun souci... Ca fait 2 mois environ.

----------

## rapsys

La réponse se trouve ici, c'est un patch a appliquer sur le code de dotclear...

http://dev.dotclear.net/2.0/changeset/1543

----------

