Replace nur $x häufig machen

Gaius

Mitglied
Hallo,

Gibt es eine Möglichkeit oder einen Code mit dem ich aus $string 4mal z.b. das wort hallo durch tschüss ersetzen kann? Also $x mal ,die restlichen nicht ersetzen?...
 
Zuletzt bearbeitet:
Meines Wissens nach gibt es keine Funktion die dir direkt aus einem String die ersten x Vorkommen ersetzt, also würde ich einen Workaround wählen. Zuerst würde ich den String (ich nehme an ein Satz?) in einzelen Wörter zerlegen und dann die Wörter Stück für Stück checken.
PHP:
function($string,$search,$replace,$count) {
  $a_string = explode(" ",$string);
  $i = 0;
  foreach($a_string as $v) {
    if($v == $search && $i < $count) {
      $a_newstring[] = $replace;
      $i++;
    }
    else {
      $a_newstring[] = $v;
    }
  }
  $s_newstring = implode(" ",$a_newstring);
  return $s_newstring;
}
Ungetestet, aber müsste funktionieren.
 
Original geschrieben von Tim Comanns
Meines Wissens nach gibt es keine Funktion die dir direkt aus einem String die ersten x Vorkommen ersetzt,

Dann kannteste preg_replace noch nicht

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

Gruss Danilo
 
Zuletzt bearbeitet:
Das man ein Tutorial über etwas schreibt heißt immer noch nicht
das man eine Thematik perfekt beherrscht und auch wir Mods/Admins
können uns nicht mit diesen Federn schmücken. (leider)

PHP:
 $text = preg_replace("#hallo#i","Tschuess",$text,4);

Funktionierte bei mir wunderbar, kannte die Funktion aber auch
noch nicht, da ich noch nie etwas n-mal ersetzen musste.

Nils
 
in das pattern kann man nicht noch reinzufällig bedingungen einbauen ^^#?
aber ok das funktioniert tatsächlich
 
Oh verdammt, ich ahnte sowas ja schon. Aber naja zumindest strengt man so noch ein bischen die grauen Zellen an und baut Workarounds für Dinge, die man so gar nicht braucht ;).
 
bedinungen ,z.b.:
$message = preg_replace("/:(.*?):/","<img src=../smilies/\\1.gif>",$message,5);

if(file_exists("../smilies/\\1".gif")) <= und das in das ersetzen einbauen ,weil ich ja immernach dem selben muster die smilies ersetze ,es aber viele verschiedene sind :lach: :grins: usw...
 
Ich wollte damit jetzt auch niemandem ans Bein pinkeln. Es handelt sich nunmal um einen Zusatzparameter einer Funktion den ich auch nur kannte weil ich das letztens brauchte. War auch garnicht böse gemeint :-)

Peacen

Gruss Danilo
 
Zurück