[PHP] SEO URL's maken

  • Hi,


    Ik ben bezig om de URL's van me project te herschrijven, deze worden opgepakt vanuit een ingaven die de gebruiker kan geven.
    Het is dus niet zo dat de titel altijd hetzelfde kan zijn.


    Me code is nu als volgt:

    PHP
    function cleanURL( $string ) {
    	$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
    	$clean = preg_replace("/[\/_|+ -]+/", '-', $clean);
    	$clean = strtolower(trim($clean, '-'));
    	
    	return $clean;
    }


    Echter merkte ik net op dat bepaalde tekens niet omgezet worden maar direct eruit gesloopt worden.


    Als voorbeeld:

    • é
    • ë
    • á
    • ä
    • ú
    • ü


    enzovoort...



    Nu heb ik via php.net gezocht naar de iconv functie, deze werkt echter niet helemaal perfect.
    Heeft iemand een tip of ervaring om zoiets voor elkaar te krijgen?


    Alvast bedankt!

  • Guest, wil je besparen op je domeinnamen? (ad)
  • In welke zin werkt iconv niet perfect? Je moet het in ieder geval op de volgende methode gebruiken:


    PHP
    function cleanURL( $string ){
    
    
        $clean = iconv( "utf-8", "ascii//TRANSLIT", $string );
        $clean = preg_replace( "/[^a-zA-Z0-9\/_|+ -]/", '', $clean );
        $clean = preg_replace( "/[\/_|+ -]+/", '-', $clean );
        $clean = strtolower( trim($clean, '-' ) );
        
        return $clean;
    }
  • Let op, dit staat op de PHP.NET pagina over Iconv:


    Citaat


    Please note that iconv('UTF-8', 'ASCII//TRANSLIT', ...) doesn't work properly when locale category LC_CTYPE is set to C or POSIX.

  • Ik zelf gebruik altijd deze onderstaande functies ooit is geschreven en werken prima alleen nooit op karakters als é enzo geprobeerd


  • Inplaats van dit:


    PHP
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);


    Dit doen:

    PHP
    $clean = preg_replace("/[^\W\d\w\/_|+ -]/", '', $string);


    \W = alle speciale karakters
    \d = alle getallen
    \w = alle normale karakters

    Kast: HAF922 | CPU: I7-930 @ 4.0GHz | CPU Cooler: Noctua NH-D14 | HDD0: Crucial M4 128GB, HDD1: Kingston SSD 64GB, HDD2/3: WD Black & Green 1TB, HDD4: Seagate 1.5TB | Mem: Kingston HyperX 12GB @ 1600MHz | Graphics: Crossfire HD6970 | Res: 5760x1080

  • M.Beers
    Bedankt voor het delen, deze werkt echter niet op de é teken (als voorbeeld).


    jopitan
    Bedankt, echter is het niet de bedoeling dat een é in een URL komt, deze moet dus omgezet worden in een normalen e.



    Edit:
    Eindelijk gevonden waar ik naar opzoek was, onderstaande blog heeft mijn probleem opgelost!


    http://iamseanmurphy.com/creat…rls-in-php-with-url-slug/

  • [offtopic]Van een tijd geleden, weer is een keer terug gekomen om hier op te reageren[/offtopic]


    Een tip voor de volgende keer, je preg_replace (Perform a regular expression search and replace) die zorgt er voor dat hij alle tekens behalve je a t/m z en A t/m Z vermijdt en verwijdert uit je string. Wat jij dus eigenlijk nodig had was het zoeken en het vervangen van speciale tekens. Hiervoor gebruik je dus de str_replace ( Replace all occurrences of the search string with the replacement string )


    Dus voor mensen die nog meer problemen hebben of dit netjes willen doen. Gebruik een str_replace voor het zoeken van speciale tekens en vervang deze!! Zelf heb ik altijd problemen gehad met iconv en al dat soort functions.

    School
    Tweedejaars Informatica Student @ Hogeschool Rotterdam.


    Webtalen
    - PHP ( OOP )
    - SQL
    - JavaScript i.c.m. jQuery framework
    - (x)HTML
    - CSS
    - Actionscript
    - XML


    Programmeertalen
    - Java
    - C#
    - Ruby i.c.m. on Rails framework


  • jopitan
    Bedankt, echter is het niet de bedoeling dat een é in een URL komt, deze moet dus omgezet worden in een normalen e.


    Edit:
    Eindelijk gevonden waar ik naar opzoek was, onderstaande blog heeft mijn probleem opgelost!


    http://iamseanmurphy.com/creat…rls-in-php-with-url-slug/


    Ah okay! Ik dacht aan de hand van je bericht dat het je ging dat de é en de andere speciale karakters eruit worden gefilterd terwijl dat niet zo moest zijn.
    Gelukkig heb je de oplossing gevonden!

    Kast: HAF922 | CPU: I7-930 @ 4.0GHz | CPU Cooler: Noctua NH-D14 | HDD0: Crucial M4 128GB, HDD1: Kingston SSD 64GB, HDD2/3: WD Black & Green 1TB, HDD4: Seagate 1.5TB | Mem: Kingston HyperX 12GB @ 1600MHz | Graphics: Crossfire HD6970 | Res: 5760x1080

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!