PHP从字符串中删除所有非UTF-8字符

时间:2014-11-30 19:09:10

标签: php string utf-8 preg-replace

我需要从字符串的开头和结尾删除像“,。/!等”的符号。但是仍然需要保留数字和字符,如ąčęėįšųž以及更多来自UTF-8的字符和字符。 例如:

  1. 字符串&g&g的结果应为g&g;
  2. 字符串ąčęėį的结果应为ąčęėį;
  3. 字符串"name"的结果应为name;
  4. 字符串69的结果应为69
  5. 字符串--abc---的结果应为abc
  6. 我认为应该使用preg_replace完成,但无法找到。

1 个答案:

答案 0 :(得分:1)

如果我理解得很好,这将做你想做的事:

$result = preg_replace('/(?:^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$)/u', '', $input);

哪里

\p{L}代表任何字母(unicode)
\p{N}代表任何数字(unicode)字符 [^\p{L}\p{N}]是一个负字符类,匹配非字母或数字的字符。