Avatar billede madsleejensen Nybegynder
23. juli 2007 - 13:57 Der er 10 kommentarer og
2 løsninger

forskel mellem str_replace og strtr

Hej hvad er forskellen entlig mellem str_replace og strtr ?

kan se at str_replace har fået en extra optional param count ellers kan jeg ikke se den store forskel i dem ?
Avatar billede maqhem Nybegynder
23. juli 2007 - 14:23 #1
str_replace()
Replaces some characters in a string (case-insensitive)

str_ireplace()
Replaces some characters in a string (case-insensitive)

Hér taler vi om to kommandoer, der ligner hinanden.


strtr()
Translates certain characters in a string

Jah, et kodeeksempel siger mere:

<?php
echo strtr("Hej med dig", "med", "xyz");
// Hyj xyz dig

echo strtr("Hej med dig", array("m" => "x", "e" => "y", "d" => "z"));
// Hyj xyz dig

echo strtr("Hej med dig", array("med" => "xyz"));
// Hej xyz dig
?>

Altså str_replace erstatter alle forekomster af en enkelt søgestreng, mens strtr er statter alle forekomster af flere søgestrenge.
Avatar billede madsleejensen Nybegynder
23. juli 2007 - 14:34 #2
det vil sige strtr tager bogstav for bogstav og replacer og ikke til forskel for str_replace tager ord for ord ?
Avatar billede olebole Juniormester
23. juli 2007 - 15:14 #3
<ole>

Nej, det er ikke forskellen på strtr og str_replace. De kan begge bruge flere søgestrenge liggende i arrays - men kun str_replace kan søge i et array.

Udover lidt forskel i brugen - strtr bruger kun ét associativt array med både søge- og erstatningsord, mens str_replace bruger et array til hver - så er forskellen altså, at str_replace også kan søge/erstatte i elementerne i et array

/mvh
</bole>
Avatar billede madsleejensen Nybegynder
23. juli 2007 - 16:40 #4
lad mig se om jeg har forstået deres opførelse rigtigt

strtk:

strtr ( "hej med dig", "ei",  "aj" );

her løber den min str igennem og replacer alle e med a og alle i med j.

str ( "hej med dig", array("hej"=>"dav") ); her løber den str igennem og replacer alle hej med dav.

---------

str_replace

samme som første eks på strtr .
str_replace ( implode("","ei") , implode("","aj") , "hej med dig" );

str_replace fordel er så at jeg kan smide en array af strings in i mit tredje argument og så replacer den alle values der i, hvilket jeg ikke kan i strtr ..

har jeg forstået det korrekt nu :) ?
Avatar billede madsleejensen Nybegynder
23. juli 2007 - 16:40 #5
hovsa self strtr( "hej med dig", array("hej"=>"dav") ); og ikke str :)
Avatar billede madsleejensen Nybegynder
23. juli 2007 - 16:41 #6
argh og explode istedet for implode ;)
Avatar billede madsleejensen Nybegynder
12. september 2008 - 18:18 #7
vil gerne lukke dette spørgsmål, og synes i begge skal smide et svar! :) på forhånd tak
Avatar billede maqhem Nybegynder
12. september 2008 - 19:11 #8
Jamen jeg smider da gerne et svar, men jeg ved nu ikke helt, om det bare er olebole, der skal have pointene.
Avatar billede madsleejensen Nybegynder
12. september 2008 - 19:25 #9
synes i begge bør smide et svar :)
Avatar billede olebole Juniormester
12. september 2008 - 20:15 #10
Vi deler naturligvis  ;o)
Avatar billede erikjacobsen Ekspert
12. september 2008 - 20:32 #11
Forskellen er også at strtr ikke forsøger erstatte noget, den allerede har erstattet. Koden

  $search=array("abe","abekat","kat");
  $replace=array("abekat","hund","mis");
  print str_replace($search,$replace,"Her er min abe og abekat og kat og en mus");
  print "<br>";
  print strtr("Her er min abe og abekat og kat og en mus", array("abe"=>"abekat","abekat"=>"hund","kat"=>"mis"));

Udskriver

  Her er min hund og hundmis og mis og en mus
  Her er min abekat og hund og mis og en mus

selv om det egentlig er det samme de gør. http://n0p.com/788595.php
Avatar billede olebole Juniormester
14. september 2008 - 14:47 #12
Ja, den staver i hvert fald ikke 'hunmis' særlig godt  0:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester