Problem bei Stringzerlegung
xpfreund
- php
Hallo,
ich habe einen String.
Jetzt will ich darin nach '<br />' suchen. Bis dahin ja kein Problem.
Der Text
vor einem <br /> kann ziemlich lang sein, er kommt aus einem Eingabefeld.
Nun möchte ich, dass der Text alle bisherigen Zeilenumbrüche beibehält und an Stellen, wo der Text eine bestimmte Anzahl also z. B. 40 Zeichen überschreitet, ein weiterer <br /> eingefügt wird.
Laut PHP-Handbuch schien strtok dafür passend zu sein.
$element="Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...<br />Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...";
$treffer=strtok($element,'<br />');
echo "Übergabe: <br />$treffer<br />";
Das <br> einfügen und so klappt ja, nur die Zerlegung nicht.
Bei dem Code kommt nur "Bet" raus, obwohl ja bis E-Mail, alles kommen müsste.
Wisst ihr was man da machen kann?
Vielleicht gibts ja irgendwelche Alternativen?
explode und str_split schienen mir keine wirklichen Alternativen.
Aber vielleicht lieg ich ja falsch.
gruß aus Senftenberg am See
Laut PHP-Handbuch schien strtok dafür passend zu sein.
Nein, ist es nicht, denn $token beinhaltet eine *Liste* von Zeichen, nach denen Du trennen willst (siehe Handbuch). Deshalb ist das hier:
$treffer=strtok($element,'<br />');
> Bei dem Code kommt nur "Bet" raus
völlig korrekt, da er nach "Bet" das erste Zeichen aus der Liste findet, nämlich ein "r".
> Wisst ihr was man da machen kann?
Ja, nimm eine der als Alternativen in der Doku genannten Funktionen.
Siechfred
--
Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
Hallo,
Nein, ist es nicht, denn $token beinhaltet eine *Liste* von Zeichen, nach denen Du trennen willst (siehe Handbuch).
Dann war das ein Verständnisproblem, weil hier strtok
steht das anders.
gruß aus Senftenberg am See
Hi,
Nein, ist es nicht, denn $token beinhaltet eine *Liste* von Zeichen, nach denen Du trennen willst (siehe Handbuch).
Dann war das ein Verständnisproblem, weil hier strtok
steht das anders.
Schon vor dem ueberfahren des Links war mir nach dieser Aussage fast klar, dass es sich wieder mal um selfphp handeln muesste ...
Bitte, Bitte, BITTE vergiss diese Seite - sie ist grottenschlecht.
Halte dich ans offizielle Manual.
MfG ChrisB
Hallo,
function umbruch ($text,$anzzeich,$trennz) {
$alletreffer=explode('<br />',$text);
$i=0;
$ergebnis='';
foreach ($alletreffer as $treffer) {
$i++;
if (strlen($treffer) > $anzzeich) $treffer = wordwrap($treffer,$anzzeich,$trennz);
if ($i > 1) $treffer = str_pad ( $treffer, (strlen($treffer) + strlen($trennz)), $trennz, STR_PAD_LEFT ); //Umbruch dazu
$ergebnis .= $treffer;
}
if ($ergebnis != '') return $ergebnis;
else return $text;
}
$element="Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...<br />Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...";
echo 'Umbruch:<br /> '.umbruch($element,20,'<br />')."<br />";
gruß aus Senftenberg am See
Hallo
und wie wäre es damit?
$zeichenkette = "Dies ist ein Satz.<br> Und noch einer.<br>Bla Bla";
$test = strtok($zeichenkette," ");
while ($test) {
echo $test ;
$test = strtok(" ");
}
Gruss
hawk
Hallo,
Hallo
und wie wäre es damit?$zeichenkette = "Dies ist ein Satz.<br> Und noch einer.<br>Bla Bla";
$test = strtok($zeichenkette," ");
while ($test) {echo $test ;
$test = strtok(" ");
}
er soll ja nicht jedes Wort einzeln ausgeben.
gruß aus Senftenberg am See