String in url (versie 2)

Door Jesper Diovo, 13 jaar geleden, 5.199x bekeken

In versie 1 zaten allerlei dingen die korter konden, vaak veel te omslachtig waren. Nu heb ik alles op één regel gekregen. Natuurlijk ziet dat er opgepropt uit, daarom staan hieronder twee versies. De kortste en de wat langere, maar nog steeds hartstikke kort! Vorige versie (1)

Wat doet het?
Je ziet het steeds vaker, in verschillende blog of nieuwssystemen staan de titels van deze artikelen in de URL. Ik heb een functie gemaakt die dat ook kan, waarbij je zelf nog eens mag kiezen wat je als teken voor de spaties gebruikt. Standaard staat het koppelteken '-' ingesteld.

Ik ben benieuwd hoe jullie hem nu vinden :).

--- Edit:
- Dank aan iisys voor het beveiligen van het koppelteken met preg_quote().

Voorbeeld: http://www.dzjemo.nl/phphulp/string-to-url.php

Gesponsorde koppelingen

PHP script bestanden

  1. string-in-url-versie-2

 

Er zijn 18 reacties op 'String in url versie 2'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
PHP erik
PHP erik
13 jaar geleden
 
0 +1 -0 -1
Ziet er goed uit.
Wouter DS
Wouter DS
13 jaar geleden
 
0 +1 -0 -1
Handig voor?
Jesper Diovo
Jesper Diovo
13 jaar geleden
 
0 +1 -0 -1
Zie versie 1, daar staat een enigszins duidelijke uitleg over het gebruik ervan.
Als voorbeeld geef ik iets als: http://www.phphulp.nl/scripts/1492/string-in-url-versie-2/ (het stukje "string-in-url-versie-2" is de omgezette string van "String in url (versie 2)").
Onbekend Onbekend
Onbekend Onbekend
13 jaar geleden
 
0 +1 -0 -1
netjes
Hipska BE
Hipska BE
13 jaar geleden
 
0 +1 -0 -1
Nou, dit snippetje maakt enkel van een string die een titel van een bericht zou moeten voorstellen een string welke een map of bestandsnaam in een url moet gaan voorstellen.

Hiermee zal het nog niet werken als je daarnaartoe linkt he. Dat dacht ik als script hier te kunnen zien bij het lezen van deze titel. Betere titel zou geweest zijn bv: url-string generator.
Eddy E
Eddy E
13 jaar geleden
 
0 +1 -0 -1
Ik gebruik je versie 1 ook al een tijdje, maar ik zal hem even updaten.
Ziet er gewoon TOPPIE uit.
En werkt erg prettig.

Ps: ik kies versie 2. Ik include toch automatisch al mijn functies en zie het zelf nooit.
Dan kies ik liever voor de wat overzichtelijker/ meer-ruimte-innemende--versie.
Gewoon top dit!
Iisys
iisys
13 jaar geleden
 
0 +1 -0 -1
Zeer mooi.
Mijn enige opmerking:
regel 14:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $string
= preg_replace("#[^\w".$koppelteken."]#", "", $string);
?>

Stel nou dat je voor $koppelteken een #, \, +, * of ? invult (of enig ander teken gebruikt in een regulair expression). Dan wordt er een warning teruggegeven.
Misschien handig als je preg_quote over $koppelteken gooit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $string
= preg_replace("#[^\w".preg_quote($koppelteken, "#")."]#", "", $string);
?>
Barman V
Barman V
13 jaar geleden
 
0 +1 -0 -1
Ziet er goed uit, maarrrrrrr.....

Als ik dit typ:

-----------------
mijn blog titel
-----------------

of dit

-----------------
mijn-blog-titel
-----------------

dan blijft de uitkomst hetzelfde. Dit zou een probleem kunnen zijn met uitlezen van de URL.
Jesper Diovo
Jesper Diovo
13 jaar geleden
 
0 +1 -0 -1
Zoals in versie 1 te lezen valt, moet het geflankeerd worden door het id. Dat ID zal er uiteindelijk voor gaan zorgen dat het juiste bericht opgehaald wordt. De titel in de url is alleen om het een mooi geheel te laten vormen. Eigenlijk dus een onzin functie, maar het staat wel prachtig en mensen zonder verdere verstand van het internet, maar hebben wel in de gaten dat de titel in de url staat, zullen het zeker waarderen ;).

@iisys: oh, bedankt. Ja, dat was ook eigenlijk nog het enige waar ik tegenaan zat te hikken. Maar nu is de oplossing gevonden, dankjewel!
Barman V
Barman V
13 jaar geleden
 
0 +1 -0 -1
@Jezpur:
Door de titel in de url te zetten verbeter je de vinbaarheid van de pagina (dit is een aantoonbaar gegeven). Tevens kijk ik voordat ik op een zoekhit klik, naast de titel ook naar de URL. Het getal 342 zegt mij niet veel, maar de naam van het artikel verteld mij veel meer.

Uiteraard veranderd het id niet, maar de titel kan wel veranderen (dus je url ook). Maar hoe vaak gebeurt dit nou? Ik heb veel ervaring bij bedrijven die artikels plaatsen op het internet en kan je vertellen dat dit zeer zelden voorkomt.
Voor die enkele keer kan je dmv een simpele redirect de searchbot vertellen waar de pagina naar is verhuisd. Dit kan je zelfs automatisch laten doen (bij wijzigen van titel de oude titel tijdelijk opslaan)!
Voor mij heeft deze manier altijd prima gewerkt. Ik heb er geen omkijken meer naar.

Ik vind het dus absoluut geen onzin functie, maar juist een belangrijk onderdeel van SEO.
Jesper Diovo
Jesper Diovo
13 jaar geleden
 
0 +1 -0 -1
@Barman: nou bedankt voor je ondersteuning. Ik denk nooit zo na over de vindbaarheid, maar meer over hoe alles eruit ziet. Eigenlijk zou ik de vindbaarheid wel moeten verbeteren, al doe ik dat soms ook wel onbewust ;).
PHP erik
PHP erik
13 jaar geleden
 
0 +1 -0 -1
@Jezpur
Apart dat je niet nadenkt over de vindbaarheid, aangezien dát juist de kracht van dit scriptje is. Het is vindbaar voor Google en ook cruciaal als iemand jouw resultaat in Google ziet. Want als iemand bijvoorbeeld 10 resultaten ziet met 'How to start with PHP' in de titel, dan zal iets als site.nl/23/how-to-start-with-php.html sneller worden aangeklikt dan site.nl/tutorials.php?id=23. Maar dus ook Google ziet jouw URL als één van de belangrijkere punten om iets te matchen.

Vandaar mooi scriptje zoals ik al zei.
Jesper Diovo
Jesper Diovo
13 jaar geleden
 
0 +1 -0 -1
Ja, ik ben apart :P.
Robert Deiman
Robert Deiman
13 jaar geleden
 
0 +1 -0 -1
Daarnaast is het ook nog eens zo dat als je de url zo opbouwt als PHPerik schetst, je berichtje altijd gevonden wordt (en getoond) ook al is de titel ondertussen op je site veranderd (en bij Google nog niet)

De hele titel van het bericht wordt niet gebruikt om het bericht te vinden, dat gaat enkel en alleen via het id. Met:
site.nl/23/how-to-start-with-php.html kom je bij hetzelfde bericht terecht als met site.nl/23/i-have-started-with-php.html. Dat is het mooie als je de rewrite engine goed gebruikt.
PHP Newbie
PHP Newbie
13 jaar geleden
 
0 +1 -0 -1
Dit:
§±!@#$%^&*()_+-={}:"|<>?[];'\,./¡€£¢&#8734;§¶•ªº–&#8800;‘“&#960;ø^¨¥†®´&#8721;œåß&#8706;ƒ©&#729;&#8710;&#730;¬…æ«÷&#8805;&#8804;µ~&#8747;&#8730;ç&#8776;

Wordt:
spa_-qipca8734spooa8800a960ouyraa8721asa8706ca729a8710a730nalda8805a8804ma8747a8730ca8776

Zouden al die tekens niet gewoon moeten verwijnen?
Jesper Diovo
Jesper Diovo
13 jaar geleden
 
0 +1 -0 -1
@PHP Newbie: dat kan natuurlijk ook. Enige wat je dan hoeft te doen is in de preg_replace de tweede parameter te vervangen voor "".

Zo dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// kortste versie
function maakUrlTitel($string, $koppelteken = '-') {
    return trim(preg_replace("#[^\w".preg_quote($koppelteken, "#")."]#", "", str_replace(" ", $koppelteken, preg_replace("#\&([a-z]{1})([a-z]{1,})\;#", "", htmlentities(strip_tags(strtolower($string)))))), $koppelteken);
}


// wat langere (duidelijkere) versie
function maakUrlTitel($string, $koppelteken = '-') {
    $string = strtolower($string); // verlaag de tekens
    $string = strip_tags($string); // haal de (html) tags eruit
    
    $string = preg_replace("#\&([a-z]{1})([a-z]{1,})\;#", "", htmlentities($string)); // zet alle rare tekens om naar gewone tekens (het idee dankzij Webmakerij)
    $string = str_replace(" ", $koppelteken, $string); // zet spaties om in het koppelteken
    $string = preg_replace("#[^\w".preg_quote($koppelteken, "#")."]#", "", $string); // haal alle tekens zoals quotes, komma's en punten uit de string, behalve het koppelteken
    $string = trim($string, $koppelteken); // haal de koppeltekens aan de uiteinden van de string weg

    return $string; // geef m maar terug :)
}
?>
Ceasar Feijen
Ceasar Feijen
12 jaar geleden
 
0 +1 -0 -1
Ziet er netjes uit.
Echter hoe ga je om met speciale tekens ?
Bijv. een turks woord akci&#287;er
Dit wordt in jouw vb. akci287er terwijl mooier zou zijn lijkt mij akciger
Ook een mini probleem is als iemand al een koppelteken heeft staan met een spatie daarna of daarvoor. Je krijgt dan een dubbel koppelteken.
Aan het eind dus kijken of er meervoudige koppeltekens staan en dan deze vervangen voor een enkele lijkt mij dan een oplossing

nb. zie dat php hulp het speciale teken omzet naar #287; het is dus een g met een umlautje daarboven
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jesper Diovo
Jesper Diovo
12 jaar geleden
 
0 +1 -0 -1
Je kunt die dan weglaten, een mooiere oplossing heb ik ook niet. Er valt niet af te lezen dat dat een g met een umlaut is, helaas. Anders had ik er zeker naar gekeken ;).

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. string-in-url-versie-2

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.