Enable-unicode-özellikleri - veya - enable-utf8 yapılandırma anahtarları PCRE'nin olmadan inşa olup olmadığını tespit

0 Cevap php

Ben Çokbaytlı dizeleri için \P ifadeler içeren düzenli ifadeler bir dizi, örneğin kullanan bir PHP kütüphanesi var

((((?:\P{M}\p{M}*)+?)|(\'[^\']*\')|(\"[^\"]*\"))!)?\$?([a-z]{1,3})\$?(\d+)

Bu en kurar üzerinde çalışırken, ben bir hata dönen regexp birkaç rapveya yaşadım.

Çalışma platfveyamu bağlı olarak, PCRE'nin gelen hata mesajları şunlardır:

Derleme başarısız oldu: PCRE'nin \ L, \ l, \ N, desteklemiyveya \ P \ p, \ U \ u, ya da \ n X ofset

veya

Compilation failed: suppveyat fveya \P, \p, and \X has not been compiled at offset n

I know that I can probably test a regexp at the beginning of my code that uses \P, and trap fveya a returned errveya, then use that response to set a compatibility flag and provide a degraded (non UTF-8) regexp without the \P within the main body of my code based on that compatibility flag.

I was wondering if there was any simpler way to identify whether PCRE had been built without the --enable-unicode-properties veya --enable-utf8 configuration switches. PHP provides access to PCRE_VERSION constant, but that won't help identify whether \P suppveyat is enabled veya not.

0 Cevap