Eregi preg_match dönüştürmek nasıl?

3 Cevap php

Ben kullanan bir lib kullanıyorum

eregi($match="^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$",$line,$matches)

eregi artık önerilmemektedir gibi ama, ben preg_match'in yukarıda dönüştürmek istiyorum. Ben aşağıdaki gibi denedim

preg_match($match="/^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i",$line,$matches)

ama Unknown modifier '[' in filename.php söyleyerek bir hata atıyor

Herhangi bir fikir nasıl bu sorunu çözmek için?

Teşekkürler

3 Cevap

Eğer / kullanırsanız regex sınırlayıcı olarak (yani preg_match('/.../i', ...)), sen desen veya php / herhangi örneklerini kaçmak gerekir o atıfta düşünecek desen sonu.

Ayrıca ayırıcı gibi % gibi farklı bir karakteri kullanabilirsiniz:

preg_match('%^http/[0-9]+\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)$%i',$line,$matches)

Sen ifadenin içinde delimiters kaçmak gerekir (bu durumda /):

"/^http\\/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$/i"

Ama aynı zamanda ~ gibi farklı bir sınırlayıcı seçti olabilir:

"~^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$~i"

Sen deneyebilirsiniz:

preg_match("@^http/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)\$@i",$line,$matches)
  • Sen bırakabilirsiniz $match=
  • You are using / as the delimiter and there is another / present in the regex after http, which effectively marks the end of your regex. When PHP sees the [ after this it complains.
  • You can use a different set of delimiters as @ or escape the / after http