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. června 14:27
Odpovědět 19. června 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. června 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. června 14:39
Proč to dělat jednoduše, když to jde i složitě :D
Avatar
Oxtimus
Člen
Avatar
Oxtimus:
$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. června 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. června 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. června 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. června 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.