Category Archives: 正規表現

文字列が日本語かどうか調べる方法について

文字列が日本語かどうか調べる方法について – PHPプロ!Q&A掲示板

挙げられている方法もさくっと実装できてよいと思いますが、「Perl 正規表現 日本語」などと検索すると
より本格的なのものが得られるかもしれません。

可変長テキストの戻り読みはできない

可変長テキストの戻り読み – 考える人, コードを書く人

可変長テキストの戻り読みはできませんよ、というお話。

[php]

[/php]

ということは出来ませんよ。ということらしいです。
ふむふむ。戻り読みは位置を指定できるというの今知りました(^_^;)

Zend_Validate_Alnumがなんかおかしい – 適当にメモったらこうなった

Zend_Validate_Alnumがなんかおかしい – 適当にメモったらこうなった

UTF-8環境下では挙動がおかしくなるという話で。
Zend_Validate_Alnum中のパターンを

[php]
$pattern = ‘/[^\p{Ll}\p{Lu}\p{N}’ . $whiteSpace . ‘]/u’;
[/php]

に変更するとUTF-8でもマッチング可能になります。
マルチバイトは何かと気をつけないといけませんね。

preg_quoteで特殊文字をエスケープ

preg_quoteを使うと、正規表現で特殊な文字として扱われる

. \ + * ? [ ^ ] $ ( ) { } = ! < > | :

を、エスケープすることができます。

[php]

[/php]

これは便利ですね。次正規表現を使う際には是非活用してみようと思います。メモメモ。

参考URL

正規表現にUTF-8を使うには/uオプションをつける。

正規表現を組んでいて、なんだか思い通りの挙動をしないなーと思った時、思い出してください。

マニュアル:パターン修飾子

u (PCRE_UTF8)
この修正子は、Perl 非互換な PCRE の機能を有効にします。パターン 文字列は、UTF-8 エンコードされた文字列として処理されます。 この修正子は、UNIX では PHP 4.1.0 以降、Win32 では PHP 4.2.3 以降で 使用可能です。 また、PHP 4.3.5 以降では、パターンの UTF-8 としての妥当性も確認されます。

UTF-8な文字列をpreg系で使っている時は、uオプションを有効にしましょう!