String ab dem n-ten Leerzeichen abschneiden?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschneiden
anzahl
array
ausgabe
code
coolste typ
erden
fehler
frage
funktion
limit
parameter
ressource
schleife
string
text
url
wort
zahl
zerlegen
-
Hallo
ich will einen Text ab dem n-ten Vorkommen eines Leerzeichens abschneiden.
so, dass quasi nur eine bestimmte Anzahl won Worten erlaubt ist
also muss ich den Strint in Array zerlegen (mit Trenner = Leerzeichen)
und davon dann die Array-Elemente die zuviel sind abschneiden
und dann das "gekürzte" Array wieder zu einem Ergebnis-String machen
oder gibt es eine einfachere Möglichkeit um einen String auf n Worte zu kürzen ?
Danke
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
chatter schrieb:
Du benutzt explode mit dem limit-Parameter. Zum zusammenbauen nutzt du danach implode.
richtig, so mache ich es bis jetzt,
die Frage war ja aber, ob es eine andere Möglichkeit gibt,
ohne in Array zerlegen und String wieder zusammensetzen
evtl. gibts ja was einfacheres, Ressourcen-Schonender ... ?
-
Nicht wirklich. Vielleicht noch mit einem Regex...
Ansonsten nur sowas:
<?php $text = 'Dies ist ein Test. Wenn alles gut läuft, sollte der Text nach diesem Wort abgeschnitten werden.'; $capture = 13; // Anzahl der Leerzeichen, nach denen abgeschnitten werden soll echo implode(' ', array_slice($words = explode(' ', $text), 0, $capture))."<br>\n"; echo implode(' ', array_slice($words, $capture)); ?>
EDIT:
Vielleicht hilft dir auch das weiter: http://php.net/manual/de/function.str-word-count.php
Beitrag zuletzt geändert: 22.12.2011 13:41:02 von fabo -
Also ich würde das ohne irgendwelche impact oder explode Funktionen machen, indem du den String einfach mit einer For-Schleife durchläufst (im Prinzip ist ein String ja ein Array von lauter einzelner Character), und dabei die Anzahl der Leerzeichen mitzählst.
Hier mal eine Funktion (mir steht im Moment kein PHP zur Verfügung, daher werde ich das hier geschriebene nachher nochmal auf Fehler überprüfen):
<?php function string_abschneiden ( $string, $zahl ) { $zaehler = 0; for ($i = 0; $i <= strlen($string); $i++) { if ( $string[$i] == ' ' ) $zaehler++; if ( $zaehler > $zahl ) return $newstring; $newstring[$i] = $string[$i]; } return $newstring; } //Beispielaufruf: $string = 'Mermadalis ist der coolste Typ auf Erden'; echo string_abschneiden ( $string, 2 ); //Ausgabe müsste sein: Mermadalis ist der ?>
__________________________________________________________
So, PHP wieder installiert und den Code überarbeitet (waren ein paar kleine Fehler drin, weil ich alles from scratch geschrieben habe):
<?php function string_abschneiden ( $string, $zahl ) { $zaehler = 0; $newstring = ''; for ($i = 0; $i <= strlen($string); $i++) { if ( $string[$i] == ' ' ) $zaehler++; if ( $zaehler > $zahl ) return $newstring; $newstring .= $string[$i]; } return $newstring; } //Beispielaufruf: $string = 'Mermadalis ist der coolste Typ auf Erden'; echo string_abschneiden ( $string, 2 ); //Ausgabe müsste sein: Mermadalis ist der ?>
Beitrag zuletzt geändert: 22.12.2011 17:05:53 von mermadalis -
Erst mal sind hier 2 Fehler:
seofav schrieb:
String schreibt man mit t
... also muss ich den Strint in Array zerlegen (mit Trenner = Leerzeichen)
mermadalis schrieb:
Du meinst wohl implode (impact gibt es gar nicht!). Aber wieder zurück zum Thema:
Also ich würde das ohne irgendwelche impact oder explode Funktionen machen, ...
Die Variante mit explode und implode ist warscheinlich schneller als die Variante mit der for-Schleife, da implode und explode in C ausprogrammiert sind und nicht erst interpretiert werden müssen. Dies gilt jedenfalls für Strings mit wenigen Wörtern.
Wenn du hingegen ein ganzes Buch so abtrennen willst wird die for-Schleife warscheinlich weit schneller sein als implode und explode weil nicht jeweils erst ein Array erstellt und danach wieder zu einem String zusammengefügt werden muss.
Es hängt also von der Wortanzahl ab welche Methode die Bessere ist. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage