Avatar billede jespernerd Nybegynder
25. juli 2009 - 22:51 Der er 9 kommentarer og
1 løsning

Grim tekst til pæn tekst

Jeg skal bruge en funktion som automatisk laver input til kun a-z, 0-9 samt bindestreg (hvis der er mellemrum i teksten, skal den lave om til bindestreg)

F.eks:
Titel: "Hej jeg hedder Nerd og han sagde 'LAD DER BLIVE VAND'"

Hvis jeg putter den ind i en funktion skal den outputte:
hej-jeg-hedder-nerd-og-han-sagde-lad-der-blive-vand

Håber i forstår - altså SEO (søgemaskineoptimering) til søgevenlige URL's ved url_rewrite.
Avatar billede repox Seniormester
25. juli 2009 - 22:53 #1
Jeg bruger denne til mine url_rewrites:
$string = ereg_replace("[^a-zA-Z0-9]", "_", $string);

Underscores istedet for hyphens...
Avatar billede jespernerd Nybegynder
25. juli 2009 - 22:55 #2
$title = 'Bananfluerne er overalt: Hvad gør vi dog her. Citat:

"Ruth"';

Bananfluerne-er-overalt--Hvad-g-r-vi-dog-her--Citat---Ruth-

Hvordan fjerner jeg overflødige mellemrum? F.eks sådan der ikke er 2 eller 3 bindestrege efter hinanden?
Avatar billede repox Seniormester
25. juli 2009 - 23:02 #3
Er der nogen grund til det?
Altså, en nem måde at gøre det på er at have en funktion til det:

function safeString($string)
{
    $parts = explode(" ", $string);
    $parts = array_filter($parts);
    $string = implode(" ", $parts);
    $string = ereg_replace("[^a-zA-Z0-9]", "_", $string);

    return $string;
}
Avatar billede jespernerd Nybegynder
25. juli 2009 - 23:10 #4
<?php
$title = 'Bananfluerne er overalt: Hvad gør vi dog her. Citat:

"Ruth"';

function __replacement($in) {
    $parts = explode(" ", $in);
    $parts = array_filter($parts);
    $string = implode(" ", $parts);

    return @ereg_replace("[^a-zA-Z0-9]", "-", $string);
}

echo __replacement($title);
?>

Outputter stadig forkert:

Bananfluerne-er-overalt--Hvad-g-r-vi-dog-her--Citat---Ruth-
Avatar billede repox Seniormester
25. juli 2009 - 23:18 #5
Nej, outputtet er ikke forkert - det stemmer fuldstændig overens med det du ønskede.
Avatar billede jespernerd Nybegynder
25. juli 2009 - 23:20 #6
Jeg ønskede, at den ikke tilføjede 3 bindestreger efter hinanden, og det gør den stadig...
Avatar billede jespernerd Nybegynder
25. juli 2009 - 23:21 #7
Bananfluerne-er-overalt--Hvad-g-r-vi-dog-her--Citat---Ruth-

skulle gerne blive

Bananfluerne-er-overalt-Hvad-g-r-vi-dog-her-Citat-Ruth

BTW... Ingen bindestreger TIL SIDST i sætningen eller i starten.. Håber du kan hjælpe..
Avatar billede repox Seniormester
25. juli 2009 - 23:36 #8
Oprindeligt ønskede du jo den kun tog a-Z og 0-9. Det fik du.

Vi udvider bare funktionen lidt:
function safeString($string)
{
    $parts = explode(" ", $string);
    $parts = array_filter($parts);
    $string = implode(" ", $parts);
    $string = ereg_replace("[^a-zA-Z0-9]", "-", $string);
    $parts = explode("-", $string);
    $parts = array_filter($parts);
    $string = implode("-", $parts);

    return $string;
}

Og så håber jeg altså at du kan forklare hvorfor du sætter @ foran ereg_replace linien?
Avatar billede jespernerd Nybegynder
25. juli 2009 - 23:41 #9
tak, svar
Avatar billede repox Seniormester
25. juli 2009 - 23:46 #10
Det kom her...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester