Jump to content
  • 0

pomoc Více nahrazených znaků v jednom řetězci (str_replace)


ForestCZE

Dotaz

Ahoj :)

 

Mám tento kód:

 


while($bld = fgets($ob))
{
$bldd = str_replace("[", ";", $bld);
$bldd = str_replace("|", ";", $bld);
$bldd = str_replace("]", ";", $bld);
$bldd = str_replace("-", ";", $bld);
}

 

Potřebuju znaky:

[
|
]
-

 

nahradit za středník. Problém je, že mi to nahradí pouze poslední znak a ne všechny. Kde je chyba? Díky :)

Link to comment
Share on other sites

2 odpovědí na tuto otázku

Recommended Posts

  • 0

Ahoj :)

 

Mám tento kód:

 


while($bld = fgets($ob))
{
$bldd = str_replace("[", ";", $bld);
$bldd = str_replace("|", ";", $bld);
$bldd = str_replace("]", ";", $bld);
$bldd = str_replace("-", ";", $bld);
}

 

Potřebuju znaky:

[
|
]
-

 

nahradit za středník. Problém je, že mi to nahradí pouze poslední znak a ne všechny. Kde je chyba? Díky :)

 

Tu je problem s logikou, to posledne sa da kvoli tomu,ze ty furt nastavujes premennu $bldd z $bld, to znamena ze bere veci zo original $bld a nie to co je v $bldd.

 

Ak si ma nepochopil, tak:

while($bld = fgets($ob))
{
$bldd = str_replace("[", ";", $bld);
$bldd = str_replace("|", ";", $bldd);
$bldd = str_replace("]", ";", $bldd);
$bldd = str_replace("-", ";", $bldd);
}

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

  • 0

GAMELASTER, to je sice reseni, ale ne nejlepsi. Uz treba jen proto, ze to nedokaze spravne zpracovat multibyte retezec (hacky, carky, ...). K tomu se da pouzit funkce mb_str_replace z knihovny mbstring

 

Nicmene nejrychlejsi a nejelegantnejsi reseni je pomoci regularniho vyrazu a funkce preg_replace, tedy

while($bld = fgets($ob)) {
   $bldd = preg_replace("/[\[\]\|\-]+/", ";", $bld);
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...