Eregi içinde Asterisk

3 Cevap php
//URL START
$urlregex = "^(https?|ftp)\:\/\/";
// USER AND PASS
$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?";
// HOSTNAME OR IP
$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*";
// PORT
$urlregex .= "(\:[0-9]{2,5})?";
// PATH
$urlregex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?";
// GET Query
$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?";
// ANCHOR
$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
// check
if (eregi($urlregex, $url)) {echo "good";} else {echo "bad";}

ama ne varsa http://www.example.com/about-me/my-4*-hotel/

Bu eregi onay çünkü yıldız işareti geçerli değil. Ben ne yapmalıyım?

3 Cevap

Dan the documentation:

Bu işlev PHP 5.3.0 ÖNERİLMEMEKTEDİR olmuştur. Bu özelliği dayanarak önerilmez.

filter_var FILTER_VALIDATE_URL ile yerine kullanın. Yoksa düzenli ifadeyi kullanmakta ısrar ederseniz o zaman kullanabilirsiniz preg_*.

Ben senin sorunun URL değil regex olduğunu düşünüyorum. Son baktığımda, yıldız bir URL path kısmında izin değildi. Eğer gerçekten orada bir yıldız gerekiyorsa bunu kaçmak gerekir:

http://www.example.com/about-me/my-4%2A-hotel/

Sen yıldızlı izin için regex değişebilir ...

$urlregex .= "(\/([a-z0-9+\$_*-].?)+)*\/?";