Hirdetés

Új hozzászólás Aktív témák

  • don_peter

    senior tag

    válasz Sk8erPeter #15135 üzenetére

    "mi az a H módosító a patternben"

    Mi Jelen esetben a H opció annyit tesz, hogy az összes előfordulást figyeli.
    Ha nincs ott a H, akkor csak az első előfordulást figyeli a többit figyelmen kívül hagyja.

    "miért 4 lépésből áll a ciklus?"
    Jogos a kérdés.
    A program rész egy teszt ciklus melyben ellenőríztem, hogy minden előfurdulás helyére beteszi az álltalam megadott speciális nyomot. (ez esetben a spec1..spec4 -ig.)
    A teszt szövegben amiben a keresést és a cserét végzi 4 előfórdulás volt így 4szer engedem neki lefutni a ciklust.
    Természetesen a 4 helyére egy változó került ami a ciklus előtt ellenőrzi az előfordulások számát és az az érték került a helyére.

    A kód egybe:

    class ProgramKodFormaz{
    var $talalatok;

    function kodok_kimentese($in){
    $text = htmlspecialchars($in);
    $this->talalatok = preg_match_all("/[codeon](.+)[codeoff]/Uis", $text, $kodok_tomb);
    return $kodok_tomb[1];
    }

    function kodok_kivagasa($in){
    $text = htmlspecialchars($in);
    //$this->kodok_kimentese($in);
    for($i=0; $i< =$this->talalatok; $i++){
    $text = preg_replace("/[codeon](.+)[codeoff]/Uis", "[pkod".$i."]", $text, 1);
    }
    return $text;
    }

    function kod_formazasa($in){
    $coderows = explode("\n", $in);
    $x=0;
    $codekiir = '< div id="codeform" >';
    foreach($coderows as $row){
    if($x != 0 AND $x != count($coderows)-1){
    $class = $x%2==0 ? "coderow" : "coderow2";
    $codekiir .= '< div class="'.$class.'" >';
    $codekiir .= '< div class="rows" >'.$x.'< /div >';
    $codekiir .= $row;
    $codekiir .= '< /div >';
    }
    $x++;
    }
    $codekiir .= '< /div >';
    return $codekiir;
    }

    function input_osszeallitas($in){
    $kodok_tomb = $this->kodok_kimentese($in);
    $text = $this->kodok_kivagasa($in);
    $i=0;
    foreach($kodok_tomb as $tomb){
    $text = preg_replace("/[pkod".$i."]/Uis", $this->kod_formazasa($tomb), $text, 1);
    $i++;
    }
    return $text;
    }
    }

    A meghívása pedig:

    $html_text = "Ide jön a szöveg
    [codeon]
    #codeform .coderow2{
    float:left;
    width:100%;
    line-height:22px;
    background-color:#d6d6d6;
    border:0px solid yellow;
    }
    [codeoff]
    további szöveg..
    [codeon]
    #codeform .coderows{
    float:left;
    border:0px solid yellow;
    }
    [codeoff]."; //ezt nyugodtan lehet még cifrázni
    $code = new ProgramKodFormaz();
    print("‹pre›");
    print($code->input_osszeallitas($html_text));

    A css fájlokat meg már úgy forrázzuk ahogyan csak akarjuk.
    A végeredmény pedig így néz ki most:

    Természetesen még pár apróság hiányzik az osztályból (ellenőrzés, tagok színezése...stb)
    Szépen lassan :D
    Köszi még egyszer, ha van kérdés vagy javaslat szívesen veszem ;)

    ----== Neo Geo és Arcade Fórum : www.neo-geo.hu ==----

Új hozzászólás Aktív témák