str_replace sa nizom

str_replace sa nizom

offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

kod:
$trazi = array("pizza", "baza", "forum"); $text = "bla bla asd oasd pizza dadgs joiajw forum ajidojgoaisjd baza"; echo str_replace($trazi, "<b>".$trazi."</b>", $text);

rezultat koji dobijem:
Citat:bla bla asd oasd Array dadgs joiajw Array ajidojgoaisjd Array


kako da iz $text boldujem samo reci iz niza $trazi?

Citat:bla bla asd oasd pizza dadgs joiajw forum ajidojgoaisjd baza



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3747
  • Gde živiš: 127.0.0.1

Ne mozes to da uradis pomocu str_replace, treba ti preg_replace:
$trazi = array("pizza", "baza", "forum"); $text = "bla bla asd oasd pizza dadgs joiajw forum ajidojgoaisjd baza"; echo preg_replace("/(" . join("|", $trazi) . ")/Ui", "<b>$1</b>", $text);

Zasto ne moze pomocu str_replace? Zato sto je u tvom primeru drugi parametar dobijen konkatenacijom dva stringa i niza, cime se dobija string.

"Problem" lezi u cinjenici da PHP nije strogo tipiziran jezik, pa se u tvom kodu nad nizom poziva magic method __toString(), koji za niz uvek vraca "Array", bez obzira sta se nalazi u tom nizu. Prakticno kao da si napisao:

echo str_replace($trazi, "<b>Array</b>", $text);



offline
  • Dusan Kostic
  • @kosticdk
  • Pridružio: 24 Avg 2011
  • Poruke: 300
  • Gde živiš: Beograd

Hvala puno na odgovoru, pozdrav Smile

Ko je trenutno na forumu
 

Ukupno su 774 korisnika na forumu :: 3 registrovanih, 1 sakriven i 770 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: bladesu, Milos82, scimitar19