Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   vBulletin: Verlinkung verändern. (https://boardunity.de/vbulletin-verlinkung-ver-ndern-t3112.html)

MrNase 13.05.2005 13:41

vBulletin: Verlinkung verändern.
 
Hallo!

Dank ein paar kleiner Modifikationen generiert mein vB nun Links die wie folgt aussehen:

http://www. pagodentreff.de/diskussionsforum/t213-5-pagoden-in-der-polizeikontrolle.html


Nun kürzt das vB ja die Links automatisch ein und ich möchte es so verändern, dass wenn es
eine interne Verlinkung ist also pagodentreff.de/diskussionsforum/ drin vor kommt UND
es auf .html endet der Link wie folgt aussieht:

Thema: 5 pagoden in der polizeikontrolle (der letzte Teil halt verlinkt)


Dabei brauche ich die Hilfe eines regexp-Experten der mir dabei weiterhelfen kann.

Nochmal zusammenfassen:
Herausfinden ob pagodentreff.de/diskussionsforum/ und ein .html in der URL vorkommt und wenn, dann so verändern, dass nur noch der letzte Teil da steht.


Ich hoffe man hat mich verstanden :)


Die URL liegt übrigens als string vor und kann daher modifiziert werden.



Momentan schaut die Stelle im Quellcode so aus:
Code:

        if (!trim($link) OR $text == $rightlink)
        {
                $tmp = unhtmlspecialchars($rightlink);
               
                if (strlen($tmp) > 55 AND !$wysiwygparse)
                {
                        $text = htmlspecialchars_uni(substr($tmp, 0, 60 - strlen(basename($tmp))) . '.../' . basename($tmp));
                }
        }

$link ist href="X"
$text ist <a>X</a>

Patrick Gotthardt 13.05.2005 14:12

Ungetestet und mit der zusätzlichen Gefahr, dass ich seit einiger Zeit nicht mehr mit preg_match gearbeitet habe (und jetzt zu faul bin, im Manual nachzugucken, welche Reihenfolge die Parameter habe):

PHP-Code:

    if (!trim($link) OR $text == $rightlink)
    {
        
$tmp unhtmlspecialchars($rightlink);

        
$matches = array();
        if(
preg_match('_pagodentreff\.de/diskussionsforum/\w[\d]+(.*?)\.html$_'$link$matches)) {
            
$text str_replace('_'' '$matches[1]);
        } elseif (
strlen($tmp) > 55 AND !$wysiwygparse)
        {
             
$text htmlspecialchars_uni(substr($tmp060 strlen(basename($tmp))) . '.../' basename($tmp)); 
        }
    } 


MrNase 13.05.2005 14:19

Hallo!

Mir wurde bereits im IRC überaus kompetent weitergeholfen und bislang funktioniert alles so wie es soll (auch wenn der Code momentan deinem nicht sehr gleicht ;)). Danke für deine Antwort :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25