 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.03.2005, 11:00
|
#1
|
|
TP-Senior
Registriert seit: Oct 2003
Ort: NRW
|
Problem mit bedingtem Ausdruck
Hallo,
in einem BBCode Parser wollte ich einbauen, dass er URLs die zu lang sind abkürzt, den Fehler kann ich aber nicht finden:
PHP-Code:
$this->BBCodePattern[] = "%\[url=(www.[-a-zA-Z0-9@:\%_\+.~#?&//=]+?)\](.+)\[\/url\]%Uis";
$this->BBCodeReplace[] = "<a href=\"out.php?out=http://$1\" target=\"_blank\">".((strlen($2) > 30) ? (substr($2,0,30) . "...") : $2)."</a>";
Habe auch probiert ohne ". ." zu arbeiten:
((strlen(http://www.google.de) > 30) ? (substr( http://www.google.de,0,30) . "...") : http://www.google.de)
So sollte es nicht aussehen (hier wird die URL so nicht angenommen)
Code:
PHP-Code:
$this->BBCodePattern[] = "%\[url=(www.[-a-zA-Z0-9@:\%_\+.~#?&//=]+?)\](.+)\[\/url\]%Uis";
$this->BBCodeReplace[] = "<a href=\"out.php?out=http://$1\" target=\"_blank\">((strlen($1) > 30) ? (substr($1,0,30) . \"...\") : $1)</a>";
Wo ist der Fehler zu suchen?
Danke,
SkaTeR
|
|
|
22.03.2005, 11:37
|
#2
|
|
TP-Supporter
Registriert seit: Jun 2004
|
was kommt den überhaupt raus, auch wenns nicht paßt, bei deiner lösung?
__________________
Ich bin bereit, meinem Schöpfer gegenüberzutreten.
Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.
|
|
|
22.03.2005, 11:55
|
#3
|
|
TP-Senior
Registriert seit: Oct 2003
Ort: NRW
|
Das ist das Ergebnis ohne ". ." sonst Parse error:
Zitat:
|
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in /srv/www/htdocs/web39/html/test/mvb20a/inc/bbcode.class.php on line 477
|
|
|
|
22.03.2005, 12:04
|
#4
|
|
TP-Supporter
Registriert seit: Jun 2004
|
ah yo. is klar, dass er ohne punkte das ganze einfach reinsetzt. geht es ohne ."..." ?
__________________
Ich bin bereit, meinem Schöpfer gegenüberzutreten.
Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.
|
|
|
22.03.2005, 12:35
|
#5
|
|
TP-Senior
Registriert seit: Oct 2003
Ort: NRW
|
Wie würde es denn richtig funktionieren?
|
|
|
22.03.2005, 13:14
|
#6
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Was heißt $1 in deinem Code? So weit ich weiß, müssen Variable-Namen mit einem Buchstaben oder Unterstrich anfangen: $a1 oder $_1 wären zulässig, aber nicht $1.
|
|
|
22.03.2005, 13:33
|
#7
|
|
TP-Senior
Registriert seit: Oct 2003
Ort: NRW
|
??? Ist doch das was replaced wird, ist doch immer so.
|
|
|
22.03.2005, 13:39
|
#8
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
Zitat:
|
Zitat von rewboss
Was heißt $1 in deinem Code? So weit ich weiß, müssen Variable-Namen mit einem Buchstaben oder Unterstrich anfangen: $a1 oder $_1 wären zulässig, aber nicht $1.
|
$1 in reg. Ausdrücken enthält $1 die erste Übereinstimmung, die aus dem Ausdruck resultiert und kann weiterverwendet werden.
Bin selber Anfänger damit, genaueres von den Regex-Spezerln!
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
|
|
|
22.03.2005, 13:42
|
#9
|
|
TP-Supporter
Registriert seit: Jun 2004
|
yo. mach aus der variable $_1 oder $a oder was auch immer, aber keine $1. und leg dir ein programm zu, was php-syntax versteht, dann würde er dir den fehler gleich anzeigen. total übersehen...
__________________
Ich bin bereit, meinem Schöpfer gegenüberzutreten.
Ob mein Schöpfer ebenso bereit ist, diese Begegnung über sich ergehen zu lassen, ist eine andere Sache.
|
|
|
22.03.2005, 13:42
|
#10
|
|
TP-Moderator
Registriert seit: Jan 2005
Ort: Düsseldorf
|
Oder mal bei den guten Regenwürmern vorbei schauen.....
http://www.regenechsen.de
So long,
skip
__________________
Chenaski - Klamotten designed by Pete
USE - nicht immer nur mit Stars and Stripes rumlaufen!
Hunde in der Großstadt: Guck mal wo ich fast reingetreten bin.....
|
|
|
22.03.2005, 14:29
|
#11
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Zitat:
|
Zitat von 321
$1 in reg. Ausdrücken enthält $1 die erste Übereinstimmung, die aus dem Ausdruck resultiert und kann weiterverwendet werden.
|
Hmm. Hab fast nie mit RegEx gearbeitet, aber ich sehe schon: ich brauch neue Literatur. Bei Perl Compatible Regular Expressions heißt es etwa, "Back-references" werden mit \\ eingeleitet -- also, \\1, \\2 usw. $ dagegen ist das Ende des Strings. Bei POSIX genau so.
EDIT --
Hmm. Ich glaube, ich habe dich etwas falsch verstanden. Ich hole mir noch einen Kaffee... 
Geändert von rewboss (22.03.2005 um 14:32 Uhr).
|
|
|
22.03.2005, 14:55
|
#13
|
|
TP-Senior
Registriert seit: Oct 2003
Ort: NRW
|
Ohne die Funktion den Link zu kürzen, geht es ja, das war nicht das Problem. Meine Frage ist halt, wie baue ich sowas in die preg_replace vernünftig ein?
|
|
|
22.03.2005, 15:07
|
#14
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Hast Du die Antwort von Jan nicht gelesen ?????
|
|
|
22.03.2005, 15:20
|
#15
|
|
TP-Senior
Registriert seit: Oct 2003
Ort: NRW
|
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 19:53 Uhr.
|
 |