View Full Version : php5-pcre utf-8 problems
saiman
November 29th, 2008, 19:22
Hi all,
I'm trying to get php5-pcre working with utf-8 support. Here is the test case:
<?php
if (@preg_match('/\pL/u', 'a') == 1) {
echo "PCRE unicode support is turned on.\n";
} else {
echo "PCRE unicode support is turned off.\n";
}
?>
And the result is "PCRE unicode support is turned off". I have the following installed:
# pkg_info |grep pcre
pcre-7.8 Perl Compatible Regular Expressions library
php5-pcre-5.2.6_2 The pcre shared extension for php
And this is the output from pcretest -C:
PCRE version 7.8 2008-09-05
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 = 10000000
Match recursion uses stack
I'm using FreeBSD 6 stable. This is the output from uname:
FreeBSD xxxx 6.3-STABLE FreeBSD 6.3-STABLE #2: Mon Aug 4 16:50:44 EEST 2008
I tried to reinstall pcre and php5-pcre, but the result is the same. Any suggestions are welcome.
Tanks in advance !
aragon
November 30th, 2008, 02:17
I think your test case should be:
if (@preg_match('/\p{L}/u', 'a') == 1) {
saiman
November 30th, 2008, 10:22
The test case is changed, but the result is still:
"PCRE unicode support is turned off."
aragon
November 30th, 2008, 22:36
That is strange. Did you install from ports? Mine works:
$ php -q
<?
if (@preg_match('/\p{L}/u', 'a') == 1) {
echo "PCRE unicode support is turned on.\n";
} else {
echo "PCRE unicode support is turned off.\n";
}
?>
PCRE unicode support is turned on.
$ pkg_info -xI php
php5-5.2.6 PHP Scripting Language
php5-ctype-5.2.6 The ctype shared extension for php
php5-dom-5.2.6 The dom shared extension for php
php5-gettext-5.2.6_1 The gettext shared extension for php
php5-mbstring-5.2.6 The mbstring shared extension for php
php5-mhash-5.2.6 The mhash shared extension for php
php5-mysql-5.2.6 The mysql shared extension for php
php5-openssl-5.2.6_2 The openssl shared extension for php
php5-pcre-5.2.6 The pcre shared extension for php
php5-pdo-5.2.6 The pdo shared extension for php
php5-pdo_mysql-5.2.6 The pdo_mysql shared extension for php
php5-pdo_sqlite-5.2.6_1 The pdo_sqlite shared extension for php
php5-session-5.2.6 The session shared extension for php
php5-simplexml-5.2.6 The simplexml shared extension for php
php5-spl-5.2.6 The spl shared extension for php
php5-wddx-5.2.6 The wddx shared extension for php
php5-xml-5.2.6 The xml shared extension for php
php5-xmlreader-5.2.6_1 The xmlreader shared extension for php
php5-xmlrpc-5.2.6_2 The xmlrpc shared extension for php
php5-xsl-5.2.6 The xsl shared extension for php
php5-zlib-5.2.6 The zlib shared extension for php
saiman
December 2nd, 2008, 11:34
Did you install from ports?
Yes. I used ports.
kamikaze
December 2nd, 2008, 11:46
Maybe you have to set a locale with UTF-8.
saiman
December 2nd, 2008, 13:58
I modified /etc/login.conf inserting the following line in default section:
:charset=UTF-8:\
Then rebuild with:
cap_mkdb /etc/login.conf
After that i recompiled the php with:
portupgrade -Df php5*
And the result is still the same:
# php test.php
PCRE unicode support is turned off.
aragon
December 2nd, 2008, 15:34
Try install the pcre module from a package build.
saiman
December 2nd, 2008, 16:43
Obviously the problem it's not into the port, because with the package the result is the same. It's something else ..
Mel_Flynn
December 3rd, 2008, 05:30
Could you show:
make -C /usr/ports/lang/php5 showconfig
saiman
December 3rd, 2008, 09:49
# make -C /usr/ports/lang/php5 showconfig
===> The following configuration options are available for php5-5.2.6_2:
CLI=on "Build CLI version"
CGI=off "Build CGI version"
APACHE=on "Build Apache module"
DEBUG=off "Enable debug"
SUHOSIN=on "Enable Suhosin protection system (not for jails)"
MULTIBYTE=on "Enable zend multibyte support"
IPV6=off "Enable ipv6 support"
MAILHEAD=on "Enable mail header patch"
REDIRECT=off "Enable force-cgi-redirect support (CGI only)"
DISCARD=off "Enable discard-path support (CGI only)"
FASTCGI=on "Enable fastcgi support (CGI only)"
PATHINFO=on "Enable path-info-check support (CGI only)"
===> Use 'make config' to modify these settings
dave
December 4th, 2008, 04:38
Perhaps this is a silly question - but... (if you are using mod_php5) did you restart apache after rebuilding PCRE extension?
Mel_Flynn
December 4th, 2008, 06:20
Well, the usual suspect, multibyte zend is on. Next up: mbstring extension is loaded? And the internal encoding:
php -i |grep internal_encoding
saiman
December 4th, 2008, 09:53
did you restart apache after rebuilding PCRE extension?
Yes I did.
php -i |grep internal_encoding
iconv.internal_encoding => ISO-8859-1 => ISO-8859-1
mbstring.internal_encoding => ISO-8859-1 => no value
wuciwug
November 4th, 2011, 17:58
I know its old - Google doesn't care though! Try running your test script on the command line i.e php xxx.php and see if that works. I found with apache-2.2.21 and php5-5.3.8 I needed to add AddDefaultCharset utf8 to httpd.conf to httpd.conf.
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.