• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Teil eines Textes ausgeben

FleyerShaver

Neues Mitglied
Hallo,
ich habe in einen String s der so aussieht:
PHP:
$s = "
[hl]Allgemein[/hl]
Lalala
[hl]Eigenschaften[/hl]
[table='2']
[*]Eigenschaft
[*]Wert
[*]Ordnungszahl 
[*]4
[*]Symbol
[*]B
[*]Periode
[*]2
[*]Deutscher Name
[*]Bor
[*]Englischer Name
[*]Boron
[*]Masse
[*]10,81
[*]Elektronegativität
[*]2,0
[*]Elektronenkonfiguration
[*][He]2s2 2p1
[*]Vorkommen
[*]natürlich
[/table]
Nen bisschen Texyt
[hl]Noch nen Punkt[/hl]
...
";

Nun möchte ich das folgendes nachher rauskommt:

[*]Eigenschaft
[*]Wert
[*]Ordnungszahl
[*]4
[*]Symbol
[*]B
[*]Periode
[*]2
[*]Deutscher Name
[*]Bor
[*]Englischer Name
[*]Boron
[*]Masse
[*]10,81
[*]Elektronegativität
[*]2,0
[*]Elektronenkonfiguration
[*][He]2s2 2p1
[*]Vorkommen
[*]natürlich
Ich möchte also dass nur die Tabelle unter dem Punkt Eigenschaften ausgelesen wird. Der Rest des Strings kann sich beliebig verändern, ich kann auch sein das bei einem anderen Punkte noch eine Tabelle erstellt ist. Ich möchte aber nur diese eine Tabelle haben.
 
Werbung:
Du musst zuerst mitelst "stripos" nach der Position von "[table" suchen.
Das istder Anfangs-Wert.
Dann suchst du nach [/table], das ist der Endwert. Und dann musst du nur noch den String "ausschneiden".


Folgender Beispielcode:
PHP:
$start = stripos($s,"[table");
$end = stripos($s,"[/table]",$start);

$news = substr($s,$start,$end-$start);

Schau da mal. Ist jetzt ungetestet, kann sein das du noch +-1 bei Start rechnen muss, damit nicht ein zeichen Abgeschnitten wird...
Viel Spaß damit.
 
Oder per Regexe:
Code:
"#\[table](.*)\[\/table\]#siU"
Hier wird alles zwischen
und
gefunden.

Oder:
Code:
"#\[table=(.*?)\](.*?)\[/table\]#si"
Hier wird
?
gefunden, fals du die '2' auch brauchst.

Mfg
 
Werbung:
@Die Zahl, das wollte ich auch schon vorschlagen ;) dachte aber, da sieht er vielleicht gleich garnet durch...

Viele Wege führen nach Rom :mrgreen:
 
Mein Code sieht jetzt so aus
PHP:
$code .= preg_replace("#\[table=(.*?)\](.*?)\[/table\]#si","<code>$2</code>",$row['content']);

Und ich bekomme folgendes raus:
[hl]Eigenschaften[/hl]
[*]Eigenschaft
[*]Wert
[*]Ordnungszahl
[*]11
[*]Symbol
[*]Na
[*]Periode
[*]3
[*]Deutscher Name
[*]Natrium
[*]Englischer Name
[*]Sodium
[*]Masse
[*]22,99
[*]Elektronegativität
[*]0,9
[*]Elektronenkonfiguration
[*][Ne]3s1
[*]Vorkommen
[*]natürlich

Allerdings möchte ich, dass er nur das innerhalb
anzeigt und nicht auch das außerhalb
 
Werbung:
Zurück
Oben