NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: preg_replace vyhledani a nahrazeni ve stringu podle zadanych pravidel

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
lada.penize
Člen
Avatar
lada.penize:24.5.2015 9:33

Ahoj, resim kod jak vyzobnout text z radku, ktery je ohranicenej konstantnim textem.
myslim že přikaz preg_replace je to co hledam, ale nedokazu sestavit tu spravnou masku s lomitek a zavorek.
zacnu prikladem a pak napisu ceho se snazim dosahnout.

zadani:
$promena0= "item.botania:craf­tPattern0.name=Craf­ting Pattern #1: 1x1" /retezec
$promena1= "item.botania:"
$promena2= "=" //promena1a2 urcuje zacatek hledani
$promena3= "#"
$promena4= "1x1" //tady 3a4 je konec hledani
$promena5= "_miking1234_" //to je identifikator databaze
$promena5= sem chci ulozit hledane slovo tedy "Crafting Pattern"

a ja potrebuju aby se sestavil zacatek hledani a konec hledani, naslo se to mezi tim, ulozilo se mi to a soucasne aby se to hledane slovo nahradilo ideckem databaze, abych vedel kam ho mam vratit.

Vysledek meho snazeni bude:
$promena0= "item.botania:craf­tPattern0.name=_mi­king1234_ #1: 1x1"
$promena5= "Crafting Pattern"

Pravidlo pro hledani:

zacatek hledani je definovan
promena1 + libovolne znaky + promena2

pak nasleduje moje slovo

ktere konci vyrazem
promena3 + libovolne znaky + promena4

Idealne aby probehl vsechny radky souboru, ktery bude nacteny v promene0 a vysledek nasazel do databaze to je cil meho snazeni.

Diky za precteni, pokud tomu nekdo i porozumel tak jsem rad, a pokud by nekdo znal reseni v php nebo i necem jinem, ci snad vedel o miste kde je to uz vyresene budu rad za kazdou pomoc.

Editováno 24.5.2015 9:37
 
Odpovědět
24.5.2015 9:33
Avatar
Odpovídá na lada.penize
Neaktivní uživatel:24.5.2015 11:18

Nevím, jestli jsem úplně pochopil, co chceš, ale tenhle kód vrací jméno toho itemu, nejspíš to, co jsi chtěl do promena5:

<?php
        $inputs = array(
                "item.botania:craftPattern0.name=Crafting Pattern #1: 1x1",
                "item.botania:craftPattern4321.name=Another Pattern #1: 1x1",
                "item.botania:loremIpsum.name=The last Pattern #1: 1x1"
        );

        $outputs = array();

        foreach($inputs as $input){
                $output;
                preg_match("/item\.botania:.*\.name=(.*?) #1: 1x1/", $input, $output);
                $outputs[] = $output[1];
        }

        var_dump($outputs);
?>

vypíše:
array(3) {
        [0]=> string(18) "Crafting Pattern"
        [1]=> string(15) "Another Pattern"
        [2]=> string(16) "The last Pattern"
}
Editováno 24.5.2015 11:19
Nahoru Odpovědět
24.5.2015 11:18
Neaktivní uživatelský účet
Avatar
lada.penize
Člen
Avatar
Odpovídá na Neaktivní uživatel
lada.penize:24.5.2015 19:53

Dekuji za kod, zitra se s tim poperu. Muj zamer s timto kodem je ze si t slovo ulozim do databaze, prelozim do cestiny (nabidnu lidem k prelozeni) a cesky vyraz vratim na puvodni misto. Proto potrebuju na misto, tam kde je /Crafting patern/ hodit cislo radku databaze, abych vedel kam to vratit.

 
Nahoru Odpovědět
24.5.2015 19:53
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.