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;
}
?>
4

1 に答える 1

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);
于 2012-04-07T08:30:04.283 に答える