NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: PHP úprava textu.

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

Aktivity
Avatar
oggymotslp
Člen
Avatar
oggymotslp:19.6.2016 14:25

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
Tvůrce
Avatar
Michal Martinek:19.6.2016 14:36

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
19.6.2016 14:36
Avatar
oggymotslp
Člen
Avatar
Odpovídá na Michal Martinek
oggymotslp:19.6.2016 14:39

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
Člen
Avatar
Michal:19.6.2016 14:46
$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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.6.2016 14:46
Avatar
Odpovídá na oggymotslp
Neaktivní uživatel:19.6.2016 14:47

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

list($pes, $jelen) = $arr;
Nahoru Odpovědět
19.6.2016 14:47
Neaktivní uživatelský účet
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:19.6.2016 17:20

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
19.6.2016 17:20
Čím víc vím, tím víc věcí nevím.
Avatar
Michal Martinek
Tvůrce
Avatar
Odpovídá na David Hynek
Michal Martinek:20.6.2016 10:11

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
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.