Autor Zpráva
leonek
Profil
Dobrý den

Potřeboval bych poradit. Mám tyto vstupní data: "1-9 ks: 250,- Kč;10-99 ks: 196,- Kč;100 a více ks: 160,- Kč;"

Zpracovávám to touto funkcí:
$vystup = preg_replace("/(\d+,- Kč);/", "<span class=kc>$1</span>&nbsp;&nbsp;&nbsp;", $vstup);

Problém je, že bych potřeboval přidat za druhou ze tří cen <br> (jakoby za druhý středník).

Nevíte někdo řešení prosím?
janbarasek
Profil
leonek:
Můžeš to rozparsovat po středníku a prostě to tam přidat ručně:
<?php
$q = '1-9 ks: 250,- Kč;10-99 ks: 196,- Kč;100 a více ks: 160,- Kč;';
$parser = explode(';', $q, 3);
echo $parser[0].';'.$parser[1].';<br>'.$parser[2];
?>
Tori
Profil
Obojí dohromady pomocí preg_replace_callback, v callbacku počítat jednotlivé ceny.
Anebo ve dvou krocích - nejdřív doplnit zlomy řádku a pak druhým replacem obalovat do <span>u.
$string = preg_replace('~([^;]+;){3}~', '$0<br>', $string);
leonek
Profil
Velice se omlouvám, neřekl jsem to celé. Data pochází z databáze a nejsou tam vždy tři ceny.

1-9 ks: 250,- Kč;10-99 ks: 196,- Kč;100 a více ks: 160,- Kč;
1-49 ks: 55,- Kč;50 a více ks: 53,- Kč;
Zvýhodněná cena: 150,- Kč;
leonek
Profil
Tori:
Děkuji, použil jsem druhé řešení i když jsem to musel trochu upravit:
$string = preg_replace("~([^;]+;){2}~", "$0<br>", $string);
$string = preg_replace("/(\d+,- Kč);/", "<span class=kc>$1</span>&nbsp;&nbsp;&nbsp;", $string);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: