電子書籍の厳選無料作品が豊富!

Fedora Core 5+Apache2.2でWEBサーバーを作っているのですが
PHPのPerl互換正規表現関数で、UTF-8を扱えるような設定が出来ずに困っています。以下エラー文
warning: preg_match() [function.preg-match]: Compilation failed: this version of PCRE is not compiled with PCRE_UTF8 support at offset 0

Apache2.2とPHP5.1.6はソースからビルドしており
PHPのコンパイル時には以下を設定しています。(省略部分有)
--enable-mbstring \
--enable-mbregex \
--with-pcre-regex=/usr/local

このままではPCREがないと言われるので、PCREを
./configure --enable-utf8 \
--enable-unicode-properties
でコンパイルして、インストールしました。

それでもエラーが消えないので、PCREのmanページを読むと
コンパイル時に--enable-utf8と共にpcre_compile()にPCRE-UTF8オプションを付けてを実行しろと書いてあるでのすが
肝心のpcre_compile()の実行の仕方が分からず困っています。。。

C言語等に触れたこともなく、Linuxも2週間程度の初心者ですが、よろしくおねがいします。

A 回答 (2件)

>コンパイル時に--enable-utf8と共にpcre_compile()にPCRE-UTF8オプションを付けてを実行しろと書いてあるでのすが


>肝心のpcre_compile()の実行の仕方が分からず困っています。。。

preg_match()の処理の中でpcre_compile()が呼ばれます。
preg_match()の中でpcre_compile()をPCRE-UTF8を付けて呼ぶためには、preg_match()でのパターン修飾子でuを指定する必要があります。

PHP マニュアル
CXIII. 正規表現関数(Perl 互換)
パターン修飾子のページを参照(参考URL)
http://jp.php.net/manual/ja/ref.pcre.php

参考URL:http://jp.php.net/manual/ja/reference.pcre.patte …
    • good
    • 0
この回答へのお礼

ありがとうございます。

ということは、PHPプログラムのほうが間違っていないとした場合
PHP or PCREのコンパイル、インストールが正常に完了していないということになりますね…。

もう一度確かめてみます。

お礼日時:2006/10/13 14:12

順番逆なんじゃ?


PHPのmakeでPCREを見に行くから先に --enable-utf8 が有効になってるPCREを作ってそれを用いてPHPをmakeしないとまずいのでは?

この回答への補足

書き方がまずかったですね。

順番はPCREをインストールした後にPHPをmakeしています。
PHPのmake時にはmake clean や make distcleanで前のmakeファイルをcleanしてます。

補足日時:2006/10/13 11:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!