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.