Chyba pri str_replace

Programovacie jazyky, rady, poradňa...
.:M4jco:.
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 442
Registrovaný: 01 máj 2007, 13:07
Bydlisko: Bassline lover
Kontaktovať používateľa:

Chyba pri str_replace

Príspevok od používateľa .:M4jco:. »

Dnes som sa stretol s problémom keď som musel použiť funkciu str_replace. Predtým som ju nepoužíval a tak netuším kde mám ani chybu, ale podla mňa chyba bude niekde inde :-/

Môj kod:

Kód: Vybrať všetko

  $user = htmlspecialchars(stripslashes($_POST['user']));
  $obsah = htmlspecialchars(stripslashes($_POST['comment']));
  $cituj = array('[cituj]', '[/cituj]');
  $zmenene = array('<blockquote>', '</blockquote>');
  $quote = str_replace("$cituj", "$zmenene", "$obsah");
ide o to že cituj sa ma zmeniť na blockquote ale nefunguje to :-(
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

$quote = str_replace("$cituj", "$zmenene", "$obsah");
načo tam dávaš tie úvodzovky?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ak by to nebolo pole, tak by tam tie úvodzovky nevadili, inak, ako už napísal audiotrack, tam tie úvodzovky vadia. :)
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Príspevok od používateľa Mmartin »

použi preg_replace

Kód: Vybrať všetko

  $user = htmlspecialchars(stripslashes($_POST['user']));
  $obsah = htmlspecialchars(stripslashes($_POST['comment']));
  $cituj = array('/\[cituj\](.*?)\[\/cituj\]/is',);
  $zmenene = array('<blockquote>$1</blockquote>');
  $quote = preg_replace($cituj, $zmenene, $obsah);
.:M4jco:.
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 442
Registrovaný: 01 máj 2007, 13:07
Bydlisko: Bassline lover
Kontaktovať používateľa:

Príspevok od používateľa .:M4jco:. »

Dík, už mi to funguje.

Ale mám ešte jednu otázku, a to že prečo sa nedá premeniť pomocou funkcie str_replace znaky "<" a ">" ?

Použil som na to tento kód. (Slová, a ostatné veci funguju bez problémov)

Kód: Vybrať všetko

  $cituj = array('<');
  $zmenene = array('[');
  $quote = str_replace($cituj, $zmenene, $obsah);
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

keď niečo robíš zle, neznamená to že sa to nedá a že chyba je niekde inde. Znamená to iba že robíš niečo zle :) Dokonca aj ten tvoj kód je správny, skutočne vypisuješ $quote alebo pôvodný $obsah? Alebo máš chybu niekde inde
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Príspevok od používateľa Mmartin »

z mojej skusenosti na BB kody pouzivaj preg_replace, a na cenzuru, a smaile str_replace
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

.:M4jco:. napísal:Ale mám ešte jednu otázku, a to že prečo sa nedá premeniť pomocou funkcie str_replace znaky "<" a ">" ?
Nie sú tam tie znaky uložené ako html entity?
.:M4jco:.
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 442
Registrovaný: 01 máj 2007, 13:07
Bydlisko: Bassline lover
Kontaktovať používateľa:

Príspevok od používateľa .:M4jco:. »

Nie, už som to opravil. Chyba bola v tom že som na premennú obsah použil funkciu htmlspecialchars.
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

.:M4jco:. napísal:Nie, už som to opravil. Chyba bola v tom že som na premennú obsah použil funkciu htmlspecialchars.
a čo ti chrono napisal :roll: nemas tam to napisane ako entity to znamena ked si použil htmlspecialchars tak sa ti "<" a ">" zmeni na "<" a ">" to znamena ze nedavas replace "<" a ">" ale toto "<" a ">" a bude ti to fungovat aj stvojim htmlspecialchars 8)

Kód: Vybrať všetko

text pred pouzitym  htmlspecialchars:
<a href="index.php">odkaz</a>

text po pouziti  htmlspecialchars:
<a&nbsp;href="index.php">odkaz</a>
kukni si tuto stranku http://www.jakpsatweb.cz/html/entity.html tam ich mas asi tak vsetky ,tak ked budes nabuduce nieco robit cez replesa a pouzijes htmlspecialchars tak si kukni ako sa ti tvoj text pomeni
Napísať odpoveď