Düzenli ifadelerde tilde operatör

2 Cevap php

Düzenli ifadelerde tilde operatörün anlamı ne bilmek istiyorum.

Ben bu deyimi var:

if (!preg_match('~^\d{10}$~', $_POST['isbn'])) {
    $warnings[] = 'ISBN should be 10 digits';
}

Ben bu belge tilde ne anlama geldiğini açıklayarak bulundu: {: [(0)}]

Bu =~ bu düzenli ifadeye karşı bu değişkeni çalıştırmak demektir perl operatör olduğunu söyledi.

Ama neden benim düzenli ifade iki tilde operatörleri içerir nedir?

2 Cevap

Bu durumda, sadece bir sınırlayıcı olarak kullanılıyor.

Genellikle, PHP, bir düzenli ifadenin ilk ve son karakterler başlangıç ​​ve eşleşen bir oran konumunu biten (eğer ungreedy, vb gibi, sonunda düzenleyiciler eklemek istiyorum) işaretlemek için "sınırlayıcılardır" vardır

Genellikle PHP ikinci sınırlayıcı olarak bunun ikinci oluşumunu eşleşen bir düzenli ifade olarak kastedilen bir dizesinde ilk karakteri bu dışarı çalışır. Bu size garip şeyler yapmak zorunda kalmazsınız - Eğer metinde, normal sınırlayıcı bir oluşumu var burada bu (örneğin, metin içinde Free / oluşumları), örneğin, yararlıdır.

Için "/" set Ayraç ile "/ /" için Eşleştirme

/\/\//

"#" Ve sınırlayıcı ile "/ /" için Eşleştirme

#//#

Bu durumda, bu bir şey ifade etmez. Bu sadece desen başlangıcını ve sonunu sınırlandıran edilir. PCRE'nin Eğer PHP preg_ * ile kullandığınız ne (Perl uyumlu düzenli ifadeler), yılında, desen tarafında ifade seçenekleri boyunca girişi, şöyle:

preg_match("/pattern/opt", ...);

Bununla birlikte, bu durumda, ayırıcı olarak "/" kullanımı isteğe bağlıdır - eğik popüler olmasına rağmen, herhangi bir şey ile değiştirilebilir. Senin durumunda, bu tilde bulunuyor.