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 回答