Seite 1 von 1

PHP: String-Liste ausgeben (ereg_replace?)

Verfasst: 24.02.2009, 11:01
von webpilot
Ich bin Anfänger in Sachen PHP und brauche etwas Hilfe.

Ich möchte ein kleines Script schreiben, welches mir aus einem String bzw. mehreren Strings eine fortlaufende nummerische Serie genereiert...irgendwie blöd zu erklären. ;)

Hier ein Beispiel:

Ich gebe folgende Strings vor:

name-*-abc-sonstwas
name-*-123-sonstwas
name-*-xyz-sonstwas

Nun soll mir das Script anstelle des * eine fortlaufende Nummer einsetzen und diese ausgeben.

Ergebnis:

name-1-abc-sonstwas
name-2-abc-sonstwas
name-3-abc-sonstwas
name-4-abc-sonstwas
...
name-1-123-sonstwas
name-2-123-sonstwas
name-3-123-sonstwas
name-4-123-sonstwas
...
name-1-xyz-sonstwas
name-2-xyz-sonstwas
name-3-xyz-sonstwas
name-4-xyz-sonstwas
...

Dabei möchte ich die maximalen Durchläufe angeben könne und auch, ob eine Null vorneweg folgen soll oder nicht.

Ich weiss dass man dafür eine for-Schleife und irgendwie auch "ereg_replace" benötigt. Wie ich das allerdings zusammenfüge, weiss ich nicht. Von regulären Ausdrücken verstehe ich ebenfalls nur Bahnhof.

Kann wer helfen?

Verfasst:
von

Verfasst: 24.02.2009, 11:26
von nerd
explode zum auseinandernehmen, zusammenfuegen mit <? $string1."-".$numer."-".$string2."-".$string3 ?>- oder implode wenn du deine nummer ins array schiebst

Verfasst: 24.02.2009, 12:02
von webpilot
Hi nerd

Danke für den Hinweis zu implode.

Also ich habe nun folgendes gebastelt:

Code: Alles auswählen

<?php
$liste = 'name-*-abc-sonstwas';
$part  = explode&#40;'*',$liste&#41;;
	// Zähler
    $count = 1;
    $end   = 5;
    while&#40;$count <= $end&#41; &#123;
    	echo $part&#91;0&#93;.$count.$part&#91;1&#93;.'<br />';
    $count++;
    &#125;
?>
Das funktioniert soweit. Mir ist allerdings nicht ganz klar, wie ich das nun mit einem array machen kann. Ich habe versucht folgendes...

Code: Alles auswählen

$liste = 'name-*-abc-sonstwas';
...mit diesem zu ersetzen:

Code: Alles auswählen

$liste = array&#40;'name-*-abc-sonstwas', 'name-*-123-sonstwas', 'name-*-xyz-sonstwas'&#41;;
Das geht so aber nicht. :-?

Verfasst: 24.02.2009, 12:07
von webpilot

Code: Alles auswählen

<?php
$liste = array&#40;'name-*-abc-sonstwas', 'name-*-123-sonstwas', 'name-*-xyz-sonstwas'&#41;;
foreach &#40;$liste as $liste&#41; &#123;

    $part  = explode&#40;'*',$liste&#41;;
    
    // Zähler
    $count = 1;
    $end   = 5;
    while&#40;$count <= $end&#41; &#123;
        echo $part&#91;0&#93;.$count.$part&#91;1&#93;.'<br />';
    $count++;
    &#125;
&#125;
?>
:D :D :D

Verfasst: 24.02.2009, 20:05
von huah
Ich habe mir jetzt den restlichen Code nicht angeschaut, aber wenn Du ein Array in sich selbst auflösen willst, kann es nicht funktionieren ;-)
foreach ($liste as $teil) {

$part = explode('*',$teil);

Verfasst: 24.02.2009, 20:08
von webpilot
Hmmm, seltsam. Ich wusste nicht, dass diesw nicht geht, jedoch hat der Code, so wie er oben steht, prima funktioniert. Die Wege der Programmierung sind unergründlich... :D