php tut für c/c++ umsteiger
-
Denk dir Datentypen weg und du hast es
-
hauptsache er reicht damit ich das hier verwirklichen kann http://www.phpbb.com/phpBB/viewtopic.php?t=78604
leider meldet sich von den phpbb leuten niemand
-
das ist doch easy, man muss nur die richtige stelle im code finden
-
hab ich das richtig verstanden?:
du willst wenn jemand einen linkt zu einen thread im forum macht, das der link dann den titel des topics hat?
-
ja
-
Dann müsstest du halt im Post nach der URL (hier: http://www.phpbb.com/phpBB/viewtopic.php)) suchen und anhand dessen die Topic-ID ermittel. Dann aus der DB den zugehörigen Titel auslesen und fertig
-
Original erstellt von <phpbb'ler>:
das ist doch easy, man muss nur die richtige stelle im code findengefunden
function make_clickable($text) { // ... }
Original erstellt von flenders:
Dann müsstest du halt im Post nach der URL (hier: http://www.phpbb.com/phpBB/viewtopic.php)) suchen und anhand dessen die Topic-ID ermittel. Dann aus der DB den zugehörigen Titel auslesen und fertigdanke für tipp
wenn ich nicht weiter komme frage ich[ Dieser Beitrag wurde am 09.03.2003 um 18:43 Uhr von Dimah editiert. ]
-
also ich bin noch nicht ganz sicher bei Regex sachen, womit testet ihr?
hat jemand ein tipp wieso
"#(http://localhost/phpbb2/viewtopic.php?t=)(\d*)(\S*)#i"
diese url nicht matcht
http://localhost/phpbb2/viewtopic.php?t=3&start=0&postdays=0&postorder=asc&highlight=
-
So wie es aussieht verwendest du preg_match, oder? (also nicht ereg)
Aber was sollen diese # an Anfang und Ende bedeuten, sowie das i ganz am Ende[ Dieser Beitrag wurde am 09.03.2003 um 21:19 Uhr von flenders editiert. ]
-
Original erstellt von flenders:
**So wie es aussieht verwendest du preg_match, oder? (also nicht ereg)
Aber was sollen diese # an Anfang und Ende bedeuten, sowie das i ganz am Ende
**jup preg_match http://tut.php-q.net/regex.html
das # ist der delimiter
http://tut.php-q.net/regex.html#u2
Der Delimiter gibt das Trennzeichen an von der der Regex von den Modifiers getrennt werden. Dieses Trennzeichen muss ein nicht Alphanumerisches-Zeichen sein, darf also kein Buchstabe und keine Zahl sein. Man benutzt z.B. die Zeichen # und die in Perl üblichen zeichen /. Man sollte ein Delimiter wählen, den man nicht im Regex benutzt, da man sonst dieses Zeichen im eigentlichem Regex escapen muss.i (case-insensitiv)ist ein modifizierer http://tut.php-q.net/regex.html#u5
Delimiter + Regex + Delimiter [+ Modifiers]
soll ich die ereg regexp nutzen?
[ Dieser Beitrag wurde am 09.03.2003 um 22:05 Uhr von Dimah editiert. ]
-
nein ereg ist veraltet und langsam
-
habe es jetzt getryt & geerrort
habe die zwei | vergessen'#http://localhost/phpbb2/viewtopic.php?t=|\d*|\S*#i'
und ich musste statt "" '' benutzen da in "" \ zum escapen benutzen wird
[ Dieser Beitrag wurde am 09.03.2003 um 22:27 Uhr von Dimah editiert. ]
-
Ich hatte statt # bisher immer / gesehen
Die Klammern brauchst du aber doch, um die einzelnen teil-matches zu bekommen! Jetzt hast du ja ein or, oder?[ Dieser Beitrag wurde am 10.03.2003 um 13:15 Uhr von flenders editiert. ]
-
jup bin von einen fehler in nähsten gestolpert
zu zeit habe ich jetzt diesen
#(\s)(http://localhost/phpbb2/viewtopic\.php\?t=)(\d*)(\S*)([^ \"\n\r\t<]*)#i
jetzt kann ich die zahl extrahieren, nur wie bringe ich den topic titel wieder rein?
also ich könnte ne funktion schreibfunction gettopictitel($id); $ret = preg_replace("#(\s)(http://localhost/phpbb2/viewtopic\.php\?t=)(\d*)(\S*)([^ \"\n\r\t<]*)#i", '\1<a href="\2\3\4" target="_blank">' . gettopictitel('\3') . '</a>', $ret);
das geht ja schlecht, wie macht man sowas?
-
du machst eine function:
function getTopic($x) { $topic holen ... ... return $topic }
und rufst die so auf:
$ret = preg_replace("#(\s)(http://localhost/phpbb2/viewtopic\.php\?t=)(\d*)(\S*)([^ \"\n\r\t<]*)#i", '\1<a href="\2\3\4" target="_blank">' . getTopic('\3') . '</a>', $ret);
fertig
-
danke
ziemlich flexiebel dieses php[ Dieser Beitrag wurde am 10.03.2003 um 14:32 Uhr von Dimah editiert. ]
-
sicher das es so geht? ich glaube nicht, in der funktion ist $x immer noch '\3'
-
ja 100%ig. übrigens mit deinen regex wirst du nichts matchen hier der funktioniert:
$ret = preg_replace("#[url](http://localhost/phpBB2/viewtopic\.php\?t=)(\d*)(\S*)([^ \"\n\r\t<]*)[/url]#i", '<a href="\2\3\4" target="_blank">' . gettopictitel('\2') . '</a>', $ret);
-
übrigens: das '\2' wird durch die topic id ersetzt (falls du es noch nicht weißt). jetzt muss du nurnoch den titel aus der db holen und fertig
-
nö
da wird '\2' an gettopictitel übergeben, das ergebnis von gettopictitel wir mit den rest string verknüpft und an preg_replace übergeben.
und erst in der funktion wird '\2' (eigentlich '\3') duch die id ersetzt