Wie kann ich Wordwrap anwenden, dass es keine Links oder HTML Tags umbricht?
Wordwrap nicht in Links
Einklappen
X
-
gar nicht - da muss eine eigene Funktion her.
Eine Variante wäre, den String erst durch strip_tags, dann durch wordwrap zu schicken und anschließend die Tags wieder einfügen,
Nur wird der letzte Punkt sehr schwierig, da durch wordwrap die Positionen verschoben werden und womöglich nachher die Tags an der falschen Stelle stehen.
Eine andere Möglichkeit:
alle Whitespaces suchen: preg_match_all('/\s+/', $str, PREG_SET_ORDER) und in einer Schleife selber nachzählen und trennen.
In jedem Fall sollten die gleichen Parameter berücksichtig werden wie beim originalen wordwrap; ergo muss der Funktions-Header so aussehen:
function wordwrap_notags($str, $width=75, $break="\n", $cut=0)
-
Re: Wordwrap nicht in Links
Original geschrieben von Celebi
Wie kann ich Wordwrap anwenden, dass es keine Links oder HTML Tags umbricht?
php ist es furzegal, ob in einem string etwas drin steht, dass man in html eventuell als link betrachten könnte, oder nicht.
lösungsvorschlag: teile deinen string vor der anwendung von wordwrap mit geeigneten stringfunktionen in mehrere kleine strings auf (strings mit reinem text, und strings mit html-tags), und wandle nur die um, die reinen text beinhalten.I don't believe in rebirth. Actually, I never did in my whole lives.
Kommentar
-
Kommentar
-
Kommentar
-
hättest du mal bei http://de2.php.net/manual/de/pcre.pattern.syntax.php nachgeschaut (ganz einfach zu erreichen über preg_replace) dann wüsstest du, warum dein exploden hyperfluid is...
und hättest du's mal probiert und nicht erst gepostet, dann wüsstest du auch, was es mit der 15 auf sich hat...
isses denn so schwer das zeug einfach zu kopieren?Ich denke, also bin ich. - Einige sind trotzdem...
Kommentar
-
Kommentar
-
Hm, net grad der gewünschte Effekt:
Code:<?php $str="DasaistasjaasdwiedersdfmalasdfFETT!!!asd <a href=\"index.php?id=a&action=register\">ASDF</a>"; echo preg_replace('%([^\s\<\>]{15})%', '\1 ', $str); ?>
Code:Dasaistasjaasdw iedersdfmalasdf FETT!!!asd <a href="index.php ?id=a&actio n=register">ASDF</a>
Kommentar
-
Code:$str='<a href="index.php?id=a&action=register">ASDF</a>'; $neu=preg_replace('%([^\s<(.*)>]{15})%U', '$1 ', $str); echo $neu;
Original geschrieben von Celebi
Jo, ich machs lieber selbst
Gibts eigentlich sowas wie [...] preg_replace_once (ja, ich hab im Maual geschaut und nix gefunden, also gibts sowas wahrscheinlich au net)?
bei preg_replace?
eher nicht oder?
die php-jungens und ihre Beschreibung von preg_replace
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
Searches subject for matches to pattern and replaces them with replacement. If limit is specified, then only limit matches will be replaced; if limit is omitted or is -1, then all matches are replaced.Ich denke, also bin ich. - Einige sind trotzdem...
Kommentar
Kommentar