2012-04-07 16 views
0

Warum ist meine Regex nicht die Perioden zu streichen? Das Endergebnis sollte nur alphanumerische und numerische Zeichen plus '-'s ausgeben, aber ich bekomme immer Punkte in der Ausgabe. Ich habe versucht, trim ($ string, '.'), Hat aber nicht funktioniert. Hilfe bitte!Regex nicht Stripping Perioden

Aktualisierung! Ich habe den Code mit der richtigen Lösung aktualisiert. Vielen Dank!

<?php 
protected $trimCharacters = "/[^a-zA-Z0-9_-]/"; 
protected $validWords = "/[a-zA-Z0-9_-]+/"; 

private function cleanUpNoise($inputText){ 

    $this->inputText = preg_replace($this->trimCharacters, '', $this->inputText); 
    $this->inputText = strtolower($this->inputText); 
    $this->inputText = preg_match_all($this->validWords, $this->inputText, $matches); 

    return $matches; 
} 
?> 
+0

würde das Entfernen alle nicht alphanumerischen oder - Zeichen implict das Entfernen eines Whitespace-Zeichens, eines Doppelpunkts und eines +? Also wird alles, was zu deinem '$ splitPattern' passt, sinnlos sein, weil dein nächster Schritt, deine' $ trimCharacters' das '$ splitPattern' impliziert? – Kerwindena

+0

Was bedeutet implicts? – Wes

+0

Sie haben Recht, aber selbst mit dem Entfernen von $ splitPattern lässt meine Regex immer noch "durch. Wenn ich es auf regexpal.com teste, sagt es, dass es funktionieren sollte. – Wes

Antwort

1

Ihre regex holt nur das erste Mal, wenn Sie Muster paßt ... versuchen, die globalen Flaggenmuster wie

in Ihnen Einstellung

"/[\\s,\\+]+/g"

So etwas wie

'/[\s,\+]+/g' 
'/[^\w-]/g' 

wäre Ihr Ausdrücke, die du suchst ... sei dir bewusst: du musst deinen Backslashes entkommen ... wenn nicht php versucht zu interpretieren \s\+\w ...

es verwenden, wie

protected $splitPattern = '/[\\s,\\+]+/g'; 
protected $trimCharacters = '/[^\\w-]/g'; 

Edit:

Ohh ... kann nicht Sie, es vereinfachen:

$this->inputText = preg_replace($this->splitPattern, '', $this->inputText); 
$this->inputText = preg_replace($this->trimCharacters, '', $this->inputText); 
+0

Ist das globale modifier in php so erkannt? – Wes

+0

Ohhh Entschuldigung, Sie können die g-Flagge natürlich weglassen, da: "Limit: Der maximal mögliche Ersatz für jedes Muster in jeder Betreff-Zeichenfolge. Der Standardwert ist -1 (kein Limit). " – Kerwindena

Verwandte Themen