PHP从字符串中删除特殊字符并留下一些

时间:2013-08-20 13:15:25

标签: php regex preg-replace

我需要从- ( )

以外的字符串中删除所有特殊字符

到目前为止我有这个代码

$q = preg_replace('/[^A-Za-z0-9\-]/', '', $q); //removes ALL characters

如何排除- ( )

5 个答案:

答案 0 :(得分:4)

你应该尝试像

这样的东西
$q = preg_replace('/[^A-Za-z0-9\-\(\) ]/', '', $q); //removes ALL characters

上述内容将允许spaces()以及-

答案 1 :(得分:3)

您的正则表达式已排除-

否则,将括号放在否定的字符类中:

$q = preg_replace('/[^A-Za-z0-9() -]/', '', $q);

此外,您无需逃离破折号。

答案 2 :(得分:2)

您应该使用此功能:

public function getAlphaNumericString($string) {
  return  preg_replace('/[^A-Za-z0-9\- ]/', '', $string); // Removes special chars.
}

答案 3 :(得分:0)

无论你想做什么 example => 。是例外其他特殊字符将被删除  preg_replace('/ [^ A-Za-z0-9 - ] /(。)','',$ string);

答案 4 :(得分:0)

function url($string)
{
    return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-'));
}


$url_name = 'manoj&chauhan';

echo =$url(url_name );

// result manoj-chauhan