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
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
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:
Dieser entfernt auch das .pdf am Ende, was Sie nicht tun möchten
– Diana
18. November 2020 um 22:23 Uhr
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:
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