Preg_match farklar?

3 Cevap php

ben sormak istiyorum, bu iki çizgi arasındaki anlam ya da fark nedir?

  1. if( preg_match_all('/\#([א-תÀ-ÿ一-龥а-яa-z0-9\-_]{1,50})/iu', $message, $matches, PREG_PATTERN_ORDER) ) {

  2. if( preg_match_all('/\#([а-яa-z0-9\-_\x{4e00}-\x{9fa5}]{1,50})/iu', $message, $matches, PREG_PATTERN_ORDER) ) {

ve 3 numaralı bu hat ne demek? (Ok işaretleme)

if( preg_match_all('/\@([a-zA-Z0-9\-_\x{4e00}-\x{9fa5}]{->3,30})/u', $message, $matches, PREG_PATTERN_ORDER) ) {

Teşekkürler!

3 Cevap

Ben sorunuzun 2. bölümünü cevap olacak:

{3,30} quantifier, bir min 3 ve 30 {[bir maksimum için düzenli ifade aracı (in 5)]}.

  • a* sıfır ya da daha fazla a demektir
  • a+, bir ya da daha fazla a demektir
  • a? sıfır ya da bir a demektir
  • a{1} means exactly one a same as just a
  • a{1,} means one or more a same as a+
  • a{1,3} means min of one and max of 3 a's

Eğer bir yerde herhangi bir karmaşık regex sahip olabilir a. Örnek: [a-zA-Z]{3,30} en az 3 ve max 30 alfabelerin herhangi en anlamına gelir.

İlk regex İbranice ve 2. regex içermez aksanlı Latin karakterler (ve muhtemelen diğerleri) içerir.

İkinci ifade Unicode syntax Unicode karakterleri eşleştirmek için kullanır.

\x{FFFF} where FFFF are 1 to 4 hexadecimal digits
Perl syntax to match a specific Unicode code point. Can be used inside character classes.

Example:
\x{E0} matches à encoded as U+00E0 only.
\x{A9} matches ©

Thus it tries to match every Unicode character from U+4e00 to U+9fa5 (from to ) whereas the last one is not a valid Unicode character.


The first expressions also tries to match these characters (一-龥) but they are not expressed in the Unicode syntax (whether or not this opposes a problem I don't know). In addition (as already mentioned) the first expression matches more characters, namely א-ת and À-ÿ.


İkinci soru was already very well answered unicornaddict tarafından.