PHP için PCRE'nin için POSIX dönüştürmek bir yarar var mı?

3 Cevap php

PHP için PCRE'nin için POSIX dönüştürmek bir yarar var mı? Ben biraz PCRE'nin üzerinde PHP kılavuzunda karıştı, ve ben PCRE'nin hakkında daha fazla bilgi bulmak için çalışacağım sırasında herkes böyle bir yarar tasarlanmış olsaydı, ben merak ediyorum.

Herkes aşağıdaki dönüştürmek için nasıl açıklamak olsaydı ya, o da iyi olurdu:

ereg("^#[01-9A-F]{6}$", $sColor)

Ama sadece bana dönüşüm söyleme, nasıl yapıldığını açıklayınız.

3 Cevap

preg_match("/^#[01-9A-F]{6}$/", $sColor)
Bu durumda sadece iki sınırlayıcı eklemeniz gerekir.

In perl you can write something like

if ( s =~ /x.+y/ )
{ print "match"; }
As you can see the actual regular expression is encapsulated in //. If you want to set an option on the regular expression you put it after the second /, e.g. switching the expression to ungreedy by default /x.+y/U
pcre now emulates this behaviour. Though you have to call a function you also have to provide the delimiters and set the options after the second delimiter. In perl the delimiter has to be /, with pcre you can chose more freely
preg_match("/^#[01-9A-F]{6}$/", $sColor)
preg_match("!^#[01-9A-F]{6}$!", $sColor)
preg_match("#^\#[01-9A-F]{6}$#", $sColor) // need to escape the # within the expression here
preg_match("^#[01-9A-F]{6}$", $sColor)
all the same to pcre, best to chose a character that doesn't appear within the expression.

preg_match("/^#[01-9A-F]{6}$/D", $sColor)

D değiştirici . People forget about it all the time. Without it $ son bir satır karakteri sağlayacaktır unutmayın. "# 000000 \ n" gibi bir dize geçerdi. Bu POSIX ve PCRE'nin arasında ince bir fark olduğunu.

Ve, tabii ki, [01-9] [0-9] için yeniden olabilir.

Bu arada, PHP hem PCRE ve POSIX düzenli ifadeleri destekler. İşte POSIX düzenli ifadeler PHP kılavuzun bölümü, yani dönüştürmek zorunda değilsiniz onlara: http://www.php.net/manual/en/book.regex.php