регулярен израз и вземане само на цифрите

embaka

Registered
здравейте, имам следния проблем

от стринг трябва да извадя само цифрите на един адрес, обаче тези цифри могат да са както в началото, демек след наклонената черта Pages/, така и в края преди .aspx, а може и въобще да ги няма.

Pages/varna_uchuilishta1009.aspx
Pages/1009varna_uchuilishta.aspx

в момента вземам тези, които са в началото, но имам проблем с тези в края.

тези в началото ги вземам ето така
preg_match('/Pages\/([0-9]+)/',$this->_string, $id);
 
Pages/varna_uchuilishta1009.aspx
Pages/1009varna_uchuilishta.aspx
preg_match('/Pages\/([0-9]+)||([0-9]\.aspx)/',$this->_string, $id);

може да ползваш if()
if(preg_match('/Pages\/([0-9]+)||([0-9]\.aspx)/',$this->_string, $id);)
 
всъщност това по-горе никва работа не върши, това || в регулярния израз би трябвало да го търси като прави черти, а не като логическо или, ако това си имал в предвид. Както и да е написах го по друг начин и вече работи както трябва

PHP:
preg_match('/Pages\/(.*?)([0-9]{4,6})\.aspx/', $this->_news_id[1][0], $nid)
, а цялото нещо придоби съвсем различен вид

PHP:
if(!preg_match('/Pages\/([0-9]+)/',$this->_news_id[1][0], $id)){
    if(preg_match('/Pages\/(.*?)([0-9]{4,6})\.aspx/', $this->_news_id[1][0], $nid)){
        if(isset($nid[2]) && is_numeric($nid[2])){
            $id[1] = $nid[2];
        }
    }else{
        preg_match('/Pages\/(.*)/i',$this->_news_id[1][0], $id);
        if(isset($id[1])){
            $id[1] = 11;
        }
    }
}
 
Извини ме простоо по навик съм се объркал! Ето ти и кода правилно написан и проверен.

PHP:
$text = 'Pages/varna_uchuilishta1009.aspx' ;
$match = preg_match('/Pages\/[0-9](.*?)|(.*?)[0-9]\.aspx/',$text);
echo $match;
:)
 
А защо слагаш и Pages в регулярния израз ? Просто питам, други варианти ли има и конкретизираш ли с него ?


Какво пречи да е само:

PHP:
preg_match("#([0-9]+)#", "Pages/varna_uchuilishta1009.aspx");

?
 
еми то няма смисъл, аз съм го написал и работи, повече няма да го променям, нямам време да се занимавам цял ден с него, едно нещо като работи не се пипа повече :) благодаря ти все пак за отделеното време
 

Back
Горе