Metin bulmak ve değiştirmek için PHP preg_replace düzenli ifadeyi nasıl kullanılır?

0 Cevap php

Ben bazı kısaltmaları yapmak için bu PHP kodu yazdı:

function cambio($txt){
    $from=array(
        '/\+\>([^\+\>]+)\<\+/', //finds +>text<+
        '/\%([^\%]+)\%/',   //finds %text%
    );

    $to=array(
        '<span class="P">\1</span>',
        '<span>\1</span>',
    );

    return preg_replace($from,$to,$txt);
}

echo cambio('The fruit I most like is: +> %apple% %banna% %orange% <+.');

Bu sonuçlanır:

The fruit I most like is: <span class="P"> <span>apple</span> <span>banna</span> <span>orange</span> </span>.

Ancak bu gibi meyvenin span etiketleri tanımlamak için gerekli:

The fruit I most like is: <span class="P"> <span class="t1">apple</span> <span class="t2">banana</span> <span class="t3">coco</span> </span>.

Ben kime bu :-) gerçekleştirmek için normal bir ifade bulmak için bir meyve alırdık


Xavier Barbosa yardımına katiyen, ben this final sollution: geldi

function matches($matches){
    static $pos=0;
    return sprintf('<span class="t%d">%s</span>',++$pos,$matches[1]);
}

function cambio($txt){//Markdown da Atípico : Deve ser usado depois do texto convertido para markdown
    $from=array(
        '/\=>(.+?)<\=/', //finds: =>text<=
        '/\+>(.+?)<\+/', //finds +>text<+
    );

    $to=array(
        '<span class="T">\1</span>',
        '<span class="P">\1</span>',
    );

    $r=preg_replace($from,$to,$txt);
    return preg_replace_callback('/%(.*?)%/','matches',$r);//finds %text%
    //'/%((\w)\w+)%/'   //option
}

0 Cevap