2012-04-07 15 views
0

なぜ正規表現は期間を削除しませんか?最終結果は、アルファベットと数字だけでなく、 ' - 'だけを出力するはずですが、出力にピリオドが表示され続けます。私はtrim($ string、 '。')を試しましたが、動作しませんでした。助けてください!正規表現のストリッピング期間はありません

更新!私は正しい解決策でコードを更新しました。ありがとう!

<?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

は、すべての非英数字を削除するか、でしょう - 文字implict空白文字、コロン、および+?の削除だから、あなたの '$ splitPattern'に合ったものをすべて削除することは、あなたの次のステップであることを意味しません。' $ trimCharacters'は '$ splitPattern'を暗示しますか? – Kerwindena

+0

implictsとはどういう意味ですか? – Wes

+0

あなたは正しいのですが、$ splitPatternを削除しても、私の正規表現はまだ通り過ぎています "と私はregexpal.comでテストすればうまくいくはずだと言っています – Wes

答えて

1

あなたの正規表現は、初回のみを取り出し、あなたはパターンが一致した...

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

好きなパターンでグローバルフラグを設定してみてください

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

のようなものは、あなたのだろうあなたが探している...認識している:バックスラッシュをエスケープする必要があります... PHPが解釈しようとしない場合\s\+\w ...

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

編集のようにそれを使用します...あなたはそれを簡略化するカント

おお:

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

そのようなグローバル修飾子は、そのようなPHPで認識されますか? – Wes

+0

ああ、申し訳ありませんが、 "制限: 各件名文字列の各パターンの可能な置換えの最大値。デフォルトは-1(無制限)です。 – Kerwindena

関連する問題