2016-07-08 7 views
1

Ich benutze Regex für den Ersatz alles außer a-z A-Z 0-9. Ich möchte hinzufügen, dass es Slash (/) nicht entfernt, aber irgendwie wird es nicht funktionieren. Ich habe den Fehler nicht gefunden.Mit preg_replace für a-z A-Z 0-9 und Slash

Danke für Ihre Hilfe!

$string = preg_replace(array('/[^a-zA-Z0-9-]/', '/[ -]+/', '/^-|-$/'), array('', '-', ''), $string); 
+0

Haben Sie es richtig übersetzt Demo auf See Demo aktualisiert? Da Sie den Schrägstrich auch als Regex-Begrenzer verwenden. – Rizier123

+0

Lesen der Regex: "Nicht a zu z A zu Z 0 zu 9 zu ???" – apokryfos

+0

Eigentlich ist dieser ohne den Slash. Aber es funktioniert großartig, es tötet alle besonderen Zeichen, aber nicht normale Zeichen. Ich brauche ein Beispiel mit dem hinzugefügten Slash, der – Neils

Antwort

0

Sie müssen Vorwärts Schrägstrich entkommen. Ich würde [^-a-z0-9\/]+ versuchen, alle unerwünschten Zeichen zu suchen und zu ersetzen.

$re = "/[^-a-z0-9\\/]+/i"; 
$str = "asdkf\n43435&\$*k((/\\"; 
$subst = ""; 

$result = preg_replace($re, $subst, $str); 

Dies wird Zeichenfolge asdkf\n43435&\$*k((/\\ zu asdkf43435k/

Siehe Demo https://regex101.com/r/vY2jC7/1

Fix reduzieren: ich i Modifikator zu ignorieren Fall wie erwähnt von @ chris85 hinzuzufügen vergessen haben, die wird dazu führen, Großbuchstaben zu ignorieren.

Siehe https://regex101.com/r/vY2jC7/2

+0

Es gibt keinen 'i' Modifikator, daher werden auch alle Großbuchstaben entfernt. Ich denke nicht, dass dies die Absicht von OP ist. – chris85

+0

Opp, du hast Recht. Ich habe vergessen, es hinzuzufügen. danke – Saleem

+0

Vielen Dank, ich habe nicht die Absicht, einen doppelten Backslash zu platzieren ... funktioniert jetzt gut – Neils

Verwandte Themen