Avatar
oggymotslp
Člen
Avatar
oggymotslp:

Zdravím,

mám text Pes#Kočka#Jelen.

A potřeboval bych to nějak upravit, aby to udělal něco takového Pes / Jelen. To znamená, že Kočku to nevypíše a Psa a Jelena to oddělí pomocí /. Vždy mě to z mysql vypíše v tomto formátě. Kdyby to šlo orientovat pomocí toho # nebo slova Kočka, tyto dvě věci se nemění, ostatní ano.

Popřípadě kdyby to šlo odloučit úplně bylo by to nejlepší. A chci říci, že nemohu upravit formát zápisu.

Děkuji všem za ochotu předem :)

Editováno 19.6.2016 14:27
Odpovědět 19.6.2016 14:25
Proč to dělat jednoduše, když to jde i složitě :D
Avatar
Michal Martinek
Redaktor
Avatar
Michal Martinek:

Ahoj, řešení je mnoho :-)
Tady máš jedno pomocí rozdělení na pole a spojení zpátky do řetězce:

$arr = explode('#', 'Pes#Kočka#Jelen');
unset($arr[1]);
$result = implode(' / ', $arr); // Pes / Jelen
 
Nahoru Odpovědět  +3 19.6.2016 14:36
Avatar
oggymotslp
Člen
Avatar
Odpovídá na Michal Martinek
oggymotslp:

A kdybych chtěl rozdělit Psa a Jelena na dvě proměnné zvlášť ?

$pes
$jelen

?

Nahoru Odpovědět 19.6.2016 14:39
Proč to dělat jednoduše, když to jde i složitě :D
Avatar
Michal Struna:
$text = "Pes#Kočka#Jelen";
$pole = explode("#", $text); // Jednotlivé části jsou dostupné jako $pole[0], $pole[1] a $pole[2]

$pes = $pole[0];
$jelen = $pole[2];
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 19.6.2016 14:46
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na oggymotslp
Filip Šohajek:

Místo posledního řádku použiješ:

list($pes, $jelen) = $arr;
 
Nahoru Odpovědět  +1 19.6.2016 14:47
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

Také přidám jeden způsob, přes regulární výraz:

$str = "Pes#Kočka#Jelen";
echo preg_replace('/^(.+)#.+#(.+)/', '$1 / $2', $str);

Těch způsobů je fakt dost....

Nahoru Odpovědět  +4 19.6.2016 17:20
Čím víc vím, tím víc věcí nevím.
Avatar
Michal Martinek
Redaktor
Avatar
Odpovídá na David Hynek
Michal Martinek:

Regulární výrazy jsou pěkný způsob řešení, jen bych to podle zadání více specifikoval (za předpokladu, že # je pouze oddělující znak).

$str = "Pes#Kočka#Jelen";
echo preg_replace('/^([^#]+)#Kočka#([^#]+)/', '$1 / $2', $str);
 
Nahoru Odpovědět  +1 20.6.2016 10:11
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 7 zpráv z 7.