tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
381
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Freakz91 Freakz91 ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    10
    Moin Leute,

    ich code grade an einem Script das ein CMS (PHP-Fusion) suchmaschinenoptimiert. Es enthält:
    - Titel im Link
    - Variabale Titel, Descriptions und Keywords

    Hier kann man sich das schonmal anschauen:
    http://seo.game-land.eu/

    aber nun zur Sache:

    ich möchte im Script automatisch die Links ersetzen und dann mit Mod-Rewrite umleiten. Funktioniert bis jetzt auch ganz gut, das problem ist nur das man alle Links bisher im Script manuell umschreiben, was ein sehr starker aufwand ist und manche User die diesen Mod vielleicht einbauen wollen können das nicht.

    Deswegen könnte ich das Script gut gebrauchen....
    Das Problem ist nur, das man aus diesem Link:

    http://seo.game-land.eu/articles.php?cat_id=1

    den hier machen muss:

    http://seo.game-land.eu/artikel_kategorie/1/test

    was ja auch gut funktioniert wenn man es manuell macht...

    Also das hier müsste:

    PHP-Code:
    <a href='".FUSION_SELF."?cat_id=".$data['article_cat_id']."'>".$data['article_cat_name']."</a
    zu diesem umgeschrieben werden:

    PHP-Code:
    <a href='artikel_kategorie/".$data['article_cat_id']."/".$data['article_cat_name']."'>".$data['article_cat_name']."</a
    Ist glaub ich eigentlich nicht so schwer ausser das jetzt die Variable Name mit drinne ist. ich hab das schon mit allen Varianten des replace probiert aber es klappt nich.

    Das soll so sein das mann einfach eine Datei oder so in diese Seite includen muss und der Link wird dann automatisch umgewandelt....

    Ich hoffe von euch hat jemand die Lösung

    mfg freakz
     

  2. #2
    marcodahlke marcodahlke ist offline Grünschnabel
    Registriert seit
    Jul 2003
    Beiträge
    2
    versuch es mal mit mod_rewrite
     

  3. #3
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    Zitat Zitat von marcodahlke Beitrag anzeigen
    versuch es mal mit mod_rewrite
    Der war gut

    OnTopic: Ich glaube hier im Forum hat mal wer eine Funktion dazu gepostet... muss mal suchen.
     
    mfg
    --------------------------------------------------------------------------------
    Kein Support via PN, Email, ICQ, Brieftaube oder Flaschenpost!

    Besucht den tutorials.de-Chat | Anleitung
    RTFM - PHP-Handbuch - MySql Handbuch
    --------------------------------------------------------------------------------
    Surftipp...Der Postillon
    --------------------------------------------------------------------------------
    Signatur v2.2

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Was mit spontan einfällt:
    Mit Ausgabepufferung alles abfangen, reguläre Ausdrücke und die alten Links ersetzen.
    Nicht wirklich performant, würde ich sagen, wird aber öfters so gemacht, wenn man Dinge kombiniert, die nicht von Haus aus zusammenpassen
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Freakz91 Freakz91 ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    10
    also ich habe schonmal sowas hier probiert:

    PHP-Code:
    FUSION_SELF."?cat_id=".$data['article_cat_id'] =
    BASEDIR."artikel/".$data['article_cat_id']."/".$data['article_cat_name']; 
    aber da kommt komischerweise nur sowas bei raus....
    articles.php?cat_id=artikel/1/artikelname

    ist ja eigentlich auch schon ganz gut nur das"articles.php?cat_id=" sollte nicht da sein...
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Du brauchst auf jeden Fall eine Routing-Tabelle, in der beide Formen (interne und externe Schreibweise) notiert sind. Damit kannst du dann in beide Richtungen umformen.

    Folgendes wäre beispielsweise möglich:
    PHP-Code:
    function foo$path$args=array() )
    {
        global 
    $routes;
        
    $found false;
        foreach( 
    $routes as $route ) {
            if( 
    $route[1][0] == $path ) {
                
    $found true;
                break;
            }
        }
        if( !
    $found ) {
            return 
    false;
        }
        
    $retVal $route[0][0];
        if( !
    preg_match_all('/<([a-zA-Z0-9-_]+)>/'$retVal$matches) ) {
            return 
    false;
        }
        foreach( 
    $matches[1] as $match ) {
            
    $retVal str_replace('<'.$match.'>', isset($args[$match]) ? rawurlencode($args[$match]) : ''$retVal);
        }
        return 
    $retVal;
    }
    function 
    bar$path )
    {
        global 
    $routes;
        
    $found false;
        foreach( 
    $routes as $route ) {
            if( 
    $route[0][0]{0} != '<' && strpos($pathpreg_replace('/<.*/'''$route[0][0])) === ) {
                if( !
    preg_match_all('/<([a-zA-Z-_][a-zA-Z0-9-_]*)>/'$route[0][0], $matches) ) {
                    continue;
                }
                
    $retVal $route[0][0];
                foreach( 
    $matches[1] as $match ) {
                    if( !isset(
    $route[0][1][$match]) ) {
                        break;
                    }
                    
    $retVal str_replace('<'.$match.'>''(?P<'.$match.'>'.$route[0][1][$match].')'$retVal);
                }
                if( 
    preg_match('<^'.$retVal.'$>'$path$match) ) {
                    
    $found true;
                    break;
                }
            }
        }
        if( 
    $found ) {
            
    $retVal = array($route[1][0]);
            foreach( 
    $match as $key => $val ) {
                if( 
    is_numeric($key) || !in_array($key$route[1][1]) ) {
                    continue;
                }
                
    $retVal[1][$key] = $val;
            }
        }
        return 
    $retVal;
    }


    $routes = array(
        array(
            array(
                
    BASEDIR.'artikel_kategorie/<cat_id>/<cat_name>',
                array(
                    
    'cat_id' => '[1-9][0-9]*',
                    
    'cat_name' => '[^/]+',
                ),
            ),
            array(
                
    FUSION_SELF,
                array(
    'cat_id'),
            ),
        ),
    );
    $args = array(
        
    'cat_id'   => 123,
        
    'cat_name' => 'foobar',
    );

    // Generieren eines passenden URL-Pfads
    $path foo(FUSION_SELF$args);
    echo 
    '<a href="'.htmlspecialchars($path).'">'.htmlspecialchars($args['cat_name']).'</a>';

    // Parsen des angefragten URL-Pfads
    var_dump(bar($path)); 
    Das Format der Routing-Tabelle wäre in diesem Fall aber noch stark verbesserungswürdig.
     
    Markus Wulftange

  7. #7
    Freakz91 Freakz91 ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    10
    oh danke das funktioniert sogar..jedoch ist der alte Link auch noch und es gibt ein paar sachen die nicht definiert sind anscheinend...hier kann man sich das mal anschauen:
    http://www.game-land.eu/articles.php

    jedoch suche ich nach einer etwas leichteren Lösung...vllt mit ob-start...? das hatte ich schon mal fertig jedoch wird dort nicht der name berücksichtigt...

    PHP-Code:
    function seofusion($buf) {

    $buf preg_replace('#viewpage\.php\?page_id=([0-9]*?)(\'|")#si',
    'seite_\1.html\2'$buf);

    return 
    $buf;
    }
    ob_start("seofusion"); 
    jedoch schaffe ich es nicht den preg_replace so zu verändern das er auch noch die Variable mit reinnimmt...
     

  8. #8
    Freakz91 Freakz91 ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    10
    kann mir niemand helfen?
     

Ähnliche Themen

  1. Platzhalter durch PHP-Code ersetzen
    Von Aragon83 im Forum PHP
    Antworten: 9
    Letzter Beitrag: 24.09.09, 20:10
  2. PHP Include durch AJAX Code ersetzen?
    Von Carrear im Forum Javascript & Ajax
    Antworten: 25
    Letzter Beitrag: 06.09.09, 19:00
  3. Antworten: 8
    Letzter Beitrag: 03.02.06, 21:10
  4. String durch Code ersetzen
    Von tomi im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.06.04, 15:53
  5. Variable durch PHP Code bei der Ausgabe ersetzen
    Von THE REAL TOOLKIT im Forum PHP
    Antworten: 1
    Letzter Beitrag: 19.12.02, 15:55