Array dynamisch füllen?

crashx

Erfahrenes Mitglied
Ich möchte irgend wie ein Array Dynamisch füllen.
Wie ich vorgehen muss, da beiss ich mir zur zeit die Zähne aus :)

Ich erhalte aus einem Textfeld mittels POST einen Satz oder wörter.
zb. "Hans Heinz Rudi"
Diesen String zerlege ich danach:
PHP:
$string = $_POST['search'];
$wort = explode(" ", $string);

Jetzt muss ich das resultat, bzw. die neuen 3 wörter
PHP:
$wort[0]
$wort[1]
$wort[2]

in ein neues Array einlesen.
PHP:
$array = array($wort[0], $wort[1], $wort[2]);
Eigentlich kein Problem, wenn das ganze Statisch wäre also immer 3 wörter wären.
Die anzahl wörter bzw. $wort[?] zu ermitteln ist einfach.
Aber das ganze danach wieder in ein ^neues Array einzulesen, das verstehe ich nicht.

Ich wie ich ein Ergebniss bekomme habe ich schon probiert.
PHP:
  for($count = 0; $count < $woerter; $count++){
    echo '$teil['.$count.'], ';
  }
So habe ich nun folgende ausgabe: $teil[0], $teil[1], $teil[2], bei 3 wörtern.
aber wie bekomme ich dieses Resultat in ein Array?

Statisch habe ich das Hinbekommen:
PHP:
<?PHP
$content = "Hans Harald Rudi Simon Fritz"; //Variabler Text oder Inhalt
$string = "Hans Fritz"; //eigentlich dan via $_POST['suchanfrage'] übergeben  
$search = array($teil[0], $teil[1]);       
$replace = array('<b>'.$teil[0].'</b>', '<b>'.$teil[1].'</b>');
echo str_replace($search, $replace, $content);
?>
Vielleicht kann mir ja jemand helfen.
 
[phpf]explode[/phpf] sollte genau das sein, was du suchst.


/Nachtrag:
Da habe ich eindeutig gepennt ;)
 
Zuletzt bearbeitet:
Hallo,

implode() sollte nicht das sein was du suchst, denn es verbindet die Elemente zu einem String und nicht zu einem Array.

Wenn ich dich richtig verstanden habe, sollte das deine Lösung sein:

PHP:
$woerter = explode(" ", $_POST["search"]);

/* jetzt hast du die einzelnen Woerter in dem Array $woerter */
/* nun durchlaeufst du das Array $woerter und packst die Elemente in ein anderes Array */

$neuesarray = array();

for ($i = 0; $i < count($woerter); $i++) {

array_push($neuesarray, $woerter[$i]);
}

Mit diesem Algorithmus hättest du jetzt alle Wörter aus $woerter in $neuesarray, welches aber natürlich komplett äquivalent zu $woerter ist, d.h.:

PHP:
/* Das $woerter-Array sieht so aus: */

Array
(
     [0] => "wort1",
     [1] => "wort2",
     [2] => "wort3"
)

/* Und das $neuesarray-Array sieht auch genauso aus: */

Array
(
     [0] => "wort1",
     [1] => "wort2",
     [2] => "wort3"
)


Daher könnte ich mir vorstellen, dass du willst, dass es so aussieht:

PHP:
Array
(
     Array
     (
          [0] => "wort1",
          [1] => "wort2",
          [2] => "wort3"
     )
)


Das würdest du ganz einfach so erreichen:

PHP:
$woerter = explode(" ", $_POST["search"]);

$neuesarray = array();

array_push($neuesarray,$woerter);

Bin mir nicht wirklich sicher ob ich dir damit helfen konnte, aber ich hoffe doch?! ;-)

MfG, teccco
 
Ein ganz anderer Weg musste ich gehen :)
Ich glaube ich habe mich nicht ganz verständlich ausgedrückt.
Sorry.

Lösung:
PHP:
$wort = explode(" ", $_POST["search"]); //String in einzelne Wörter zerlegen
$zahl = count($wort); //Anzahl wörter ermitteln
for($count = 0; $count < $zahl; $count++){ //Wörter in array füllen
  $array[] = $wort[$count];
  $replace[] = '<b>'.$wort[$count].'</b>';
}
$inhalt = "ich bin ein neuer Text, schau wie ich aussehe";

$text = str_replace($array, $replace, $inhalt); //Wörter aus $array mit Wörter aus $replace ersetzen
echo $text;
 
Zurück