Laie benötigt hilfe: Links als mit header ausstatten (BB-Code)

kasiopaia

Grünschnabel
Hallo,

ich habe die Sucxhfunktions seit gestern insgesamt gut 6 Stunden malträtiert und find eirgendwie nciht was ich brauche, oder ich habe einfach aufgrund der ganzen Fachausdrücke nicht bemerkt das richtige gefunden zu haben.

Es geht um Folgendes:

Ich arbeite an einem Forum mit welches mit PragmaMX und MX-Board als Forensystem arbeitet.

Dort ist es jedoch so, das wenn ich einen Link sagen z.B. zu Ebay setze der so aussieht:

Code:
http://cgi.ebay.de/BMW-Motorradjacke-Modell-3-Phasen-Groesse-56-NP-519_W0QQitemZ320342291229QQcmdZViewItemQQptZHerrenbekleidung?hash=item320342291229&_trksid=p3286.c0.m14&_trkparms=72%3A1683%7C66%3A2%7C65%3A12%7C39%3A1%7C240%3A1309

dieser eben auch so im Forum steht was extrem dämlich aussieht!

Lieber hätte ich, dass das Ergebnis gleich mittels PHP-Code den header der Zielseite russucht und diesen dann mittels BB-Code direkt den Link maskiert, also so:

BMW Motorradjacke Modell 3 Phasen Größe 56 NP 519,-- € - ebay.de - Herrenbekleidung

Ich habe schon in vielen Boards (vorallem VB3) gesehend as es diese Funktion definitiv gibt und man diese eigentlich irgendwie übernehmen können müsste.

Die Lizens von VB3 ist jedoch erheblich zu teuer für unsere kleine Community und ich bin auch nicht der Seiteninhaber, sondern Primär für die Contentseite zuständig sowie für theme-Erstellung, also muss ich wenn ich eine nützliche neuerung haben will andere lösungen finden.

Der einzige Thread de rin fRage käme ist dieser hier:

Links automatisch ersetzen und Header auslesen - PHP @ tutorials ...

Nur habe ich keine Ahnung in welche dateien udn an welche stelle ich die Forenspezifischen PHP-Dateien damit erweitern/verändern muss.

Daher habe ich mir an dieser Stelle freundliche Hilfe erwünscht, in der Hoffnung diese zu erhalten. :)

Sollte dieses Thema doch irgendwo schon existieren so sei man mir bitte nicht böse und packe einfach den entsprechenden Verweis hier in das Thema, das wäre net, dankeschön :)

Mit freundlcihen Grüßen

Chris
 
ui shcnelle antwort, leider verstehe weitgehend bahnhof wenn ich was von RegEx etc. lesen, wie gesagt bin da ziemlicher laie!

um das ganze einfacher zu gestalten kann ich gerne die php-dateien in eienzip o.ä. packen und von meinem server (nicht der des boardinhabers) zum downlaod freistellen?

dann wüsste ich ggf wo ich was einfügen müsste :-/
 
Also wenn euer Server es erlaubt, dann könnteste über fopen(Addresse,r) die Addresse öffnen, und dann in dieser nach dem tag <title> und </title> suchen lassen, und den dazwischen stehenden Text dann als Titel ausgeben lassen.
 
Da du Laie bist, stelle ich hier einfach mal etwas rein, über Google gefunden mit: "php read title from website"

PHP:
<?php
/**
 * URL title looker-upper.
 *
 * This code will grab a chunk of data from a URL, look at the <title>
 * and display an <a href> tag using the URL's current title.
 *
 * It is a neat way to always have your links use the most current page
 * title of the pages you link to, although it can really slow the loading
 * of *your* pages down if you link to slow/unavailable sites.
 *
 * @authour Scott Hurring (scott at hurring dot com)
 * @version 0.2 (Dec 23, 2005) Merry christmas!
 * http://hurring.com/code/php/url_title/
 * @license GPL
 */

// Your site's domain, used if you give a url that's located
// on the current server: like "/code/index.php"
$url_site_domain = 'hurring.com';

/*
function url()

$link        the URL whose title you want to fetch
$text        optional text to append to the page title
*/
function url($link, $text='')
{
    // Ensure $link is a valid URL        
    $url = url_resolve($link);
    
    $fp = @fopen($url, 'r');
    if (!$fp) {
        $title = (!$text ? $link : $text);
        return "(Broken Link: $link". ($text ? ": {$text}" : "") .")";
    }

    // Grab <title>*</title> from the first "chunk" of data
    $title = url_grab_title($fp);

    // No <title> tag in first chunk...    
    if (!$title) {
        $title = (!$text ? $link : $text);
        return "<a href='$url'>$title</a>";
    }

    // User gave me some text to append to the link title
    if ($text) {    
        $title .= ': '. $text;
    }
    
    return "<a href='$url'>$title</a>";
}

/*
Attempt to turn a partial URL (e.g. "server.com" or "/code/")
into a valid URL (e.g. "http://server.com/" or "http://server.com/code/")
*/
function url_resolve($url)
{
    global $url_site_domain;
    
    if (!preg_match('/^(http|ftp):/', $url)) {
        // assume it's not "server.tld" and instead "/dir/file.ext"
        if (!preg_match('/\.(com|net|org|co|uk|edu|info|biz)/', $url)) {
            $url = $url_site_domain .'/'. $url;    
        }
    }
    return 'http://'. preg_replace('/\/\//', '/', $url);
}

// Fetch a "chunk" of data and look for <title> in it
function url_grab_title($fp)
{
    // How many bytes to grab in one chunk.
    // Most sites seem to have <title> within 512
    $chunk_size = 512;

    $chunk = fread($fp, $chunk_size);
    $chunk = preg_replace("/(\n|\r)/", '', $chunk);

    // Look for <title>(.*?)</title> in the text
    if (preg_match('/<title>(.*?)<\/title>/i', $chunk, $matches)) {
        return $matches[1];
    }

    return null;
}

// Run this to test the code    
function url_test()
{
    print url('hurring.com') ."\n";
    // <a href='http://hurring.com'>Hurring.com</a>
    print url('google.com') ."\n";
    // <a href='http://google.com'>Google</a>
    print url('hurring.com', 'Append me') ."\n";
    // <a href='http://hurring.com'>Hurring.com: Append me</a>
    print url('/code/php/') ."\n";
    // <a href='http://hurring.com/code/php/'>Hurring.com: Code: PHP</a>
    print url('/code/php/', "Append me") ."\n";
    // <a href='http://hurring.com/code/php/'>Hurring.com: Code: PHP: Append me</a>
    print url('groups.yahoo.com/groups/alhkjter/') ."\n";
    // <a href='http://groups.yahoo.com/groups/alhkjter/'>groups.yahoo.com/groups/alhkjter/</a>
    print url('groups.yahoo.com/groups/alhkjter/', 'Pirates') ."\n";
    // <a href='http://groups.yahoo.com/groups/alhkjter/'>Pirates</a>
    print url('garbage') ."\n";
    // (Broken Link: garbage)
    print url('garbage', 'Pirates') ."\n";
    // (Broken Link: garbage: Pirates)
}

url_test();
?>
http://hurring.com/scott/code/php/url_title/

Die letzte definierte Version url_test() dient wie der Name bereits sagt, wirklich nur als Test.
 
PHP:
function niceLink($url) {
$metaTags = get_meta_tags ( $url );
return "<a href=\"$url\">$metaTags['keywords']</a>";
}

$reqs;
ereg("http://(.*)ebay(.*)", $string, &$reqs);
ereg_replace($reqs[0], niceLink($reqs[0]), $string);

So kannst das probieren, aber besonders bei der RegEx keine Garantie, funktionier übrigens nur mit Ebay-Links, weil da bei den keywords der Titel nochmal drinne steht . ^^
 
Das war mir klar, nur bei ebay geht es Zufällig per getMetaTags()-Funktion, das allgemeingültige steht da oben ja auch schon!!
 
Zurück