Ersetzen Sie alle Leerzeichen und Sonderzeichen durch einen Bindestrich in der URL mit der PHP-Sprache

Lesezeit: 2 Minuten

Benutzeravatar von khushbu
khushbu

Wie ersetzt man Leerzeichen und Bindestriche, wenn sie zusammen mit nur Bindestrich in PHP erscheinen?

zB unten ist meine URL

http://kjd.case.150/1 BHK+Balcony- 700+ sqft. spacious apartmetn Bandra Wes

Darin möchte ich in PHP alle Sonderzeichen durch Bindestrich ersetzen. In der URL steht hinter „Balkon“ bereits ein Bindestrich. Wenn ich den Bindestrich durch ein Sonderzeichen ersetze, werden daraus zwei Bindestriche, da die URL bereits einen Bindestrich enthält und ich nur einen Bindestrich haben möchte.

  • Was soll Ihre URL werden? http://kjd.case.150/1-BHK-Balcony-700-sqft-spaciou-apartmetn-Bandra-West?

    – Erich

    23. Juli 2010 um 13:30 Uhr

Der Benutzeravatar Ihres Common Sense
Ihr gesunder Menschenverstand

Ich würde sagen, Sie wollen es vielleicht anders. Nicht “Leerzeichen”, sondern alle nicht alphanumerischen Zeichen. Weil es andere Zeichen geben kann, die in der URL nicht erlaubt sind (z. B. (+ Zeichen, das als Leerzeichenersatz verwendet wird)

Also, um aus einem Freiformtext eine gültige URL zu machen

$url = preg_replace("![^a-z0-9]+!i", "-", $url);

  • Sollten das nicht eher Schrägstriche als Ausrufezeichen sein?

    – Erich

    23. Juli 2010 um 13:28 Uhr

  • Sie müssen zuerst den Domainnamen abschneiden, sonst verlieren Sie Ihre Punkte.

    – Erich

    23. Juli 2010 um 13:31 Uhr

Benutzeravatar von codaddict
codaddict

Wenn es maximal ein Leerzeichen um den Bindestrich geben könnte, können Sie die Antwort von John verwenden. Wenn es mehr als ein Leerzeichen geben könnte, können Sie versuchen, es zu verwenden preg_replace:

$str = preg_replace('/\s*-\s*/','-',$str);

Dies würde sogar einen ersetzen - nicht mit Leerzeichen mit umgeben - !!

Um es etwas effizienter zu machen, könnten Sie Folgendes tun:

$str = preg_replace('/\s+-\s*|\s*-\s+/','-',$str);

Dies würde nun a - wird von mindestens einem Leerzeichen umgeben, während es ersetzt wird.

Benutzeravatar von Tali Luvhengo
Tali Luvhengo

Dies sollte es für Sie tun

strtolower(str_replace(array('  ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string))));

  • Dieser entfernt auch das .pdf am Ende, was Sie nicht tun möchten

    – Diana

    18. November 2020 um 22:23 Uhr

Benutzeravatar von sushilprj
sushilprj

Wenden Sie diesen regulären Ausdruck an /[^a-zA-Z0-9]/, '-' wodurch alle nicht alphanumerischen Zeichen durch ersetzt werden -. Speichern Sie es in einer Variablen und wenden Sie diesen regulären Ausdruck erneut an /\-$/, '' was dem letzten Zeichen entgeht.

Es ist ein altes Profil, aber um jemandem zu helfen, verwenden Sie diese Funktion:

function urlSafeString($str)
{
    $str = eregi_replace("[^a-z0-9\040]","",str_replace("-"," ",$str));
    $str = eregi_replace("[\040]+","-",trim($str));
    return $str;
}

Es wird Ihnen eine sichere URL-Zeichenfolge zurückgegeben

1430410cookie-checkErsetzen Sie alle Leerzeichen und Sonderzeichen durch einen Bindestrich in der URL mit der PHP-Sprache

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy