Dize harf ve boşluk (php) içeriyorsa nasıl bulabilirim?

3 Cevap php

"Eksi - dize tüm avrupa ve doğu alfabe harflerini ve" "(boşluk) ve" sadece varsa Yani değer false veya true almak gerekir. Bazı $ bir dize ile böyle bir şey yapmak nasıl?

3 Cevap

İşte regular-expressions.info Unicode ve PHP konuda söyleyeceklerini bulunuyor:

Regular expressions on PHP

Regex fonksiyonların en önemli set preg ile başlar. Bu fonksiyonlar PCRE kitaplığı (Perl-uyumlu düzenli ifadeler) etrafında bir PHP sarıcı vardır. şey bu web sitesinde PHP'nin preg işlevleri için geçerlidir üzerinde düzenli ifade öğretici PCRE regex lezzet hakkında söyledi. Düzenli ifadeler kullandığı tüm yeni PHP kodu için preg işlevleri kullanmanız gerekir.

Özel bir seçenek yerine 8 bitlik varsayılan eşleme modu Unicode eşleme modunda açar /u hangi. Sen (/u \x{FFFF}, \X veya \p{L} Unicode karakterleri, graphemes, özellikleri maç veya {[kullanma, düzenli ifadeler için belirtmelisiniz 5)]}. PHP UTF-8 dize olarak ziyade bir ASCII dizesi olarak '/regex/u' yorumlayacaktır.


Unicode support

Unicode standardı yerler birine her atanan kod noktası (karakter) script. Bir komut belirli bir insan yazı sistem tarafından kullanılan kod noktaları grubudur. Tay gibi bazı komut dosyaları tek bir insan dili ile gelmektedir. Latince gibi diğer komut birden fazla dil kapsar.

Çok az düzenli ifade motorları bugün Unicode komut dosyalarını destekler. Bu öğretici, sadece JGsoft motor, Perl ve tartışılan tüm lezzetleri PCRE can match Unicode scripts. İşte tüm Unicode komut tam listesi:

  • \p{Cyrillic}
  • [... Gerisi atlanmış]

Bir dize only PHP Kiril harflerinden oluşur görmek istiyorsanız eğer, bu nedenle, bu normal bir ifade karşı maç için deneyebilirsiniz:

/^\p{Cyrillic}*$/u

Bu deneyin:

if (preg_match('/^[\p{L&} -]+$/u', $a)) {
  # Only letters (any script), spaces and hyphens
} else {
  # Emtpy string or other characters too
}

\p{L} ideogramlar (örneğin Çince karakter) de dahil olmak üzere herhangi bir komut bir sözcüğün parçası olabilir, herhangi bir karakterle eşleşir. \p{L&} alfabetik komut (vb Latince, Yunanca, Kiril, Thai,) yalnızca harfler maçlar

... Eğer bir karakter kümesi issue yanlış şekilde mücadele gibi geliyor, ama yanlış olabilir? Geçmişte beni tufaya gelmiş birkaç gotchas ..

  • DOMDocument ne olursa olsun, UTF8 dahili şeyi işler.
  • Bir farklı bir karakter kümesine dahil
  • Veritabanı çünkü "İSİMLERİ SET .." eğitim eksikliği Unicode çıktısı değil.

Nedir kod elde etmek gerekiyor? Biz bir sonraki adıma Sorunuza geçmiş bakabilirsiniz belki, daha iyi bir çözüm orada var.