PHP :: Reguläre Ausdrücke :: Problem
-
Vielleicht noch 'ne andere Frage: Ich hab ja ein Gästebuch, und da werden URLs quasi jetzt umgewandelt. Allerdings habe ich aucheine Funktion geschrieben:
function trim_long_words($txt,$len) { $txt=str_replace("<br>","<br> ",$txt); $a=explode(" ",$txt); for($i=0;$i<count($a);++$i) for($j=0;$j<strlen($a[$i]);++$j) if($j%$len==0) $a[$i]=substr($a[$i],0,$j)." ".substr($a[$i],$j,strlen($a[$i])); return str_replace("<br> ","<br>",implode(" ",$a)); }
Frage hierzu: URLs sollen natürlich nicht zerschnitten werden, wie kann ich das machen?`
Und dann wäre noch wünschenswert, wenn eine URL zu lang ist, dort die ersten paar Zeichen, ... und die letzten zeichen anzuzeigen, also etwa sowas hier:
http://ganzganzganzganzlangeurl.com/ -> http://gan...geurl.com/
OK, letzteres sollte ich noch selbst packen, aber das davor... k.a. wie ich das anstellen soll.
EDIT: Verdammt... ich kann auf die tatsächliche Länge von \\1\\2 nicht zugreifen, stattdessen wird mir 6 ausgegeben... dh. ich komm mit letzterem Punkt doch nicht klar... kann mir da einer helfen?
-
Schau dir mal den e modifier an
-
EDIT: Cool, danke, hat mir beim letzten Problem schonmal geholfen, jetzt ist nurnoch das Problem mit dem trim_long_words...
-
Die Website in deinem Anhang funktioniert nicht!
-
lol... warte mal 10 sekunden ab ^^ oder klick auf aktualisieren oder auf netzwerkeinstellungen oder auf zurück...
EDIT: Und lies dir die "Fehlermeldung" auch mal durch: "Die Seite will nicht angezeigt werden." Also wer das für eine echte Fehlermeldung hält...
-
-
Hmm... ne, das hilft mir nicht, weil:
ich will Wörter umbrechen, die zu lang sind: Ja
ich will URLs umbrechen, also http://www.gaaaaaaaaaaanz-lange-url.de/ : Nein.Und diese Funktion würde aber beides oder garnichts von beidem umbrechen.
-
Was kann denn i=0;a);++i) <-- hier besser foreach for(j=0;a[i]);++j) <-- warum gehst du jeden Buchstaben einzeln durch ???
-
Nunja... no comment
Na sag du mir, wie ich das machen soll, ich bin hier ja derjenige, der keine Ahnung hat :p Aber es muss so sein, dass bei
http://www.url.com/folder/file.php?param=value¶m2=value2
und bei
http://www.newssite.com/articles/05/02/01,8,50,23.htm
nichts zerstückelt wird, aber bei
loooooooooooooooooooooooooooooooooooooooooooooooooooool
schon. Das ist mein Problem. Ich wieß, dass man das wirgendwie mit regulären Ausdrücken machen muss, aber ich weiß nicht wie ich das anstellen soll...
-
ist denn jetzt dein $txt Plain-Text, oder schon HTML-Code?!
Wenn du z.B. zuerst htmlspecialchars über den String laufen lässt, dann mit deinem preg_replace die URLs durch Tags ersetzt und die "Anzeige-URL" ggf. entsprechend kürzt, dann kannst du nachher einfach dein explode machen. Wenn dann das erste Zeichen eines Elements ein < ist, dann weißt du, dass es sich um eine URL handelt und gehst einfach weiter zum nächsten Element.
Oder du machst einfach wieder ein preg_replace und suchst Strings mit z.B. mehr als 50 Zeichen, dia aber nicht in < > eingeschlossen sind
-
$message=str_replace("\\\\","\\",$message); $message=str_replace("\\'","'",$message); $message=str_replace("\\\"","\"",$message); $message=get_short($message,512); // $message=trim_long_words($message,38); // Plain Text, außer Zeilenumbrüche $message=preg_replace('~(http\:\/\/)([0-9a-zA-Z\,\.\-_\%\/]*)([0-9a-zA-Z\,\.\-_\%\&\?\=\/]*)~e',"'<a href=\"\\1\\2\\3\" title=\"\\1\\2\\3\" target=\"_blank\">'.get_short('\\2',36).'</a>'",$message); // Links evtl. enthalten
Es kommt drauf an, wo man es durchlaufen lassen will.
-
Hast du mit meiner Vorgehensweise jetzt etwas anfangen können - oder was genau ist jetzt noch deine Frage?!