Maak tekst mod_rewrite geschikt

Door - -, 15 jaar geleden, 2.335x bekeken

Met deze functie maak je een tekst geschikt om in je mod_rewrite-URL's te gebruiken, dat zullen veelal titels zijn.

Voorbeelden:
"Hello world" -> "hello-world"
"Öëä" -> "oea"
"(((+++---LOL---+++)))" -> "lol"
"mod_rewrite4life." -> "mod_rewrite4life."

Gebruik:
Niet moeilijk, gewoon je tekst door de functie halen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sText
= 'Rare tekst,,,+++ met allemaal RäRé tekens.';
$sModRewrite = mod_rewrite($sText);
?>

Gesponsorde koppelingen

PHP script bestanden

  1. maak-tekst-modrewrite-geschikt

 

Er zijn 14 reacties op 'Maak tekst modrewrite geschikt'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
M Ypma
M Ypma
15 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if (($iAscii >= 97 AND $iAscii <= 122) OR ($iAscii >= 48 AND $iAscii <= 57) OR $iAscii == 45 OR $iAscii == 46 OR $iAscii == 95)
        {
            $sNew = $sNew . $letter;
        }


waar komt $letter vandaan?
Verder kon deze code wel wat compacter.
Ik kan niet oordelen of dit handig is, ben nog nooit tegen een probleem aangelopen hierin.
Michael
michael
15 jaar geleden
 
0 +1 -0 -1
sorry dat ik het zeg. Maar wanneer heb je zoiets nou echt nodig? :)
Gerben Jacobs
Gerben Jacobs
15 jaar geleden
 
0 +1 -0 -1
Een groot gedeelte van deze functie kan ook met preg_replace
- -
- -
15 jaar geleden
 
0 +1 -0 -1
@Ypma: Foutje is eruit. Het kan inderdaad wel wat compacter, ik kijk er deze week wel even naar.

@michael: Zodra je een tekst geschikt wilt maken om in je URL te gebruiken, d.m.v. mod_rewrite.

@Gerben Jacobs: Inderdaad...
Terence Hersbach
Terence Hersbach
15 jaar geleden
 
0 +1 -0 -1
$sNew = $sNew . 'e';
kan ook als
$sNew .= 'e';

AND is && beter
OR is || beter

kijk verder ook eens naar de switch()
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
@Terence:
Quote:
AND is && beter
OR is || beter
In het geval van PHP ben ik dat niet helemaal met je eens. Ze doen namelijk verschillende dingen, je kunt dus niet zo maar zeggen dat de ene beter is dan de andere, de verwerkingsvolgorde is verschillend.

In volgorde van werking:
&&
||
AND
OR

Ook + en += hebben andere volgordes, dat kan in complexe code dus voor verschillende resultaten zorgen.
Bas Kreleger
Bas Kreleger
15 jaar geleden
 
0 +1 -0 -1
Dit kun je ook gebruiken voor bijv. je weblog. Titels zet je om via deze functie en kun je gebruiken in je URL adres.

Omdat je vaak streepjes gebruikt voor spaties, zou je echt streepjes ook niet moeten toestaan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
 OR $iAscii == 45
?>


Zou je moeten weghalen in de eerste IF statement.

Ook is het niet mooi als er twee streepjes achter elkaar komen. Daarvoor kun je iets als dit gebruiken (getest):
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
        // spatie
        else if ($iAscii == 32)
        {

               if (empty($ignore_line))
                    $sNew = $sNew . '-';
        else
            unset($ignore_line);
                                
               $next = $i+1;
               $nextletter = $sText{$next};
               $nextascii = ord($nextletter);
               
               if (($nextascii >= 97 AND $nextascii <= 122) OR ($nextascii >= 48 AND $nextascii <= 57) OR $nextascii == 46 OR $nextascii == 95)
                   unset($ignore_line);
               else
                   $ignore_line = 1;
        }

?>
Crispijn -
Crispijn -
15 jaar geleden
 
0 +1 -0 -1
een functie die er weer een nette variabele van maakt die je op kan nemen in je query is ook wel lekker... wie a zegt, moet ook b zeggen ;)

IIg uitleggen hoe dit verder te gebruiken is wel netjes! Ben benieuwd!
Ericbruggema x
ericbruggema x
15 jaar geleden
 
0 +1 -0 -1
waarom mag je trouwens geen + gebruiken bij mod_rewrite?
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
@Eric: De + gebruik je om voor diverse GET-parameters, zie bv. de url wanneer je op Google iets zoekt: q=woord1+woord2
Joren de Wit
Joren de Wit
15 jaar geleden
 
0 +1 -0 -1
Sterker nog, het is een voor url's geëncodeerde spatie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo urlencode(' ');
?>
Ferdi R
Ferdi R
15 jaar geleden
 
0 +1 -0 -1
Ik doe dit altijd heel simpel.

Als ik een SEO link maak doe ik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    while($row = mysql_fetch_assoc($res))
    {

        $naam = str_replace(" ","-",$row['name']);
        echo '<li><a href="/voorbeeld/categorie/'.$row['id'].'-'.$naam.'.html">'.$row['name'].'</a></li>';
    }

?>


Dan krijg je /voorbeeld/categorie/1-titel-tekst.html
Normaal is het /voorbeeld/categorie.php?cat=1

Die titel naam staat er voor de sier er achter maar hij wordt zo wel in google gevonden.

En ik heb ergens gelezen dat als je een dash gebruikt beter dan een + is of een underscore.
Een dash leest google als aparte woorden.
Jaap v
jaap v
15 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
// speciale c
        else if ($iAscii == 231)
        {

            $sNew = $sNew . 'c';
        }

?>

Versie met wat aanpassingen: http://phpsteun.nl/viewtopic.php?f=7&t=15#p128
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Vincent
Vincent
15 jaar geleden
 
0 +1 -0 -1
Zelf heb ik een functie met een hoop str_replace() regels.
Zijn behoorlijk wat characters die je niet in de URL wilt hebben, omdat deze anders een andere waarde krijgen (spatie wordt %20 bijv).
Zeker bij een site met dynamische content zul je geregeld tegenkomen dat de bovengenoemde tekens niet voldoende zijn.

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
function valueToLink($value) {
    $value = str_replace("'", "", $value);
    $value = str_replace("’", "", $value);
    $value = str_replace("‘", "", $value);
    $value = str_replace("`", "", $value);
    $value = str_replace("\"", "", $value);
    $value = str_replace(" ", "_", $value);
    $value = str_replace(">", "", $value);
    $value = str_replace("<", "", $value);
    $value = str_replace("&gt;", "", $value);
    $value = str_replace("&lt;", "", $value);
    $value = str_replace("[", "", $value);
    $value = str_replace("]", "", $value);
    $value = str_replace("{", "", $value);
    $value = str_replace("}", "", $value);
    $value = str_replace("»", "", $value);
    $value = str_replace("«", "", $value);
    $value = str_replace("|", "", $value);
    $value = str_replace("%", " procent", $value);
    $value = str_replace("^", "", $value);
    $value = str_replace("¡", "", $value);
    $value = str_replace("²", "", $value);
    $value = str_replace("³", "", $value);
    $value = str_replace("¤", "", $value);
    $value = str_replace("€", "e", $value);
    $value = str_replace("¼", "", $value);
    $value = str_replace("½", "", $value);
    $value = str_replace("¾", "", $value);
    $value = str_replace("¶", "", $value);
    $value = str_replace("¶", "", $value);
    $value = str_replace("ç", "", $value);
    $value = str_replace("™", "", $value);
    $value = str_replace("®", "r", $value);
    $value = str_replace("©", "c", $value);
    $value = str_replace("Ø", "O", $value);
    $value = str_replace("™", "", $value);
    $value = str_replace("¿", "", $value);
    $value = str_replace("¬", "", $value);
    $value = str_replace("\\", "", $value);
    $value = str_replace("ñ", "n", $value);
    $value = str_replace("é", "e", $value);
    $value = str_replace("è", "e", $value);
    $value = str_replace("ë", "e", $value);
    $value = str_replace("ó", "o", $value);
    $value = str_replace("ò", "o", $value);
    $value = str_replace("ö", "o", $value);
    $value = str_replace("á", "a", $value);
    $value = str_replace("à", "a", $value);
    $value = str_replace("ä", "a", $value);
    $value = str_replace("ú", "u", $value);
    $value = str_replace("ù", "u", $value);
    $value = str_replace("ü", "u", $value);
    $value = str_replace("û", "u", $value);
    $value = str_replace("í", "i", $value);
    $value = str_replace("ì", "i", $value);
    $value = str_replace("ï", "i", $value);
    $value = str_replace("î", "i", $value);
    return $value;
}

?>


Misschien niet de netse methode, maar het werkt. :)

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

Inhoudsopgave

  1. maak-tekst-modrewrite-geschikt

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.