PHP rtrim所有尾随特殊字符

时间:2016-04-27 04:04:37

标签: php regex

我正在创建一个检测并删除字符串中所有尾随特殊字符的函数。它可以转换字符串,如:

  • “的你好世界
  • “的你好世界/
  • “的你好世界 -
  • “的你好世界/%--+...

进入“hello-world”。

任何人都知道没有编写大量代码的技巧吗?

4 个答案:

答案 0 :(得分:1)

只是为了好玩

[^a-z\s]+

Regex demo

<强>解释
[^x]:一个不是x sample的字符 \s:&#34;空格字符&#34;:空格,制表符,换行符,回车符,垂直标签sample
+:一个或多个sample

PHP:

$re = "/[^a-z\\s]+/i";
$str = "Hello world\nhello world/\nhello world--\nhellow world/%--+...";
$subst = "";

$result = preg_replace($re, $subst, $str);

答案 1 :(得分:1)

试试这个

  $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.

或从字符串中删除撇号

preg_replace('/[^A-Za-z0-9\-\']/', '', $string);  // escape apostraphe

答案 2 :(得分:1)

您可以使用这样的正则表达式,具体取决于您对“特殊字符”的定义:

function clean_string($input) {
    return preg_replace('/\W+$/', '', $input);
}

它替换字符串\W末尾的任何不是单词字符($)的字符。 \W将与[^a-zA-Z0-9_]匹配,因此任何非字母,数字或下划线的内容都将被替换。要指定哪些字符是特殊字符,请使用这样的正则表达式,将所有特殊字符放在[]括号中:

function clean_string($input) {
    return preg_replace('/[\/%.+-]+$/', '', $input);
}

答案 3 :(得分:0)

这是您正在寻找的。 :

([^\n\w\d \"]*)$

它删除任何不是字母,数字,空格和新行的内容。 只需将其称为:

preg_replace('/([^\n\w\s]*)$/', '', $string);