【问题标题】:How to replace all specials char but keeping the accents [duplicate]如何替换所有特殊字符但保留重音[重复]
【发布时间】:2014-02-05 07:12:10
【问题描述】:

我想更改字符串中的所有特殊字符,但我想保留所有重音字符。 preg_replace() 可以吗?

我当前的代码:

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

【问题讨论】:

  • 你好 Riskesh,这个话题和你的话题不一样。 :)
  • @Closevoters: 上面提供的副本不是正确的。

标签: php regex preg-replace non-ascii-characters


【解决方案1】:

试试 Unicode:

preg_replace('/[^\p{L}0-9\-]/u', '', $string);

\p{L} 是一个Unicode property 匹配任何语言的所有字母Unicode properties on php.net

【讨论】:

  • 你好!谢谢你的好回复!这很好!如果我不想替换 & 和单引号,我该怎么做?
  • PHP 的文档对于这个问题似乎更准确:php.net/manual/en/regexp.reference.unicode.php
  • 感谢大家的帮助!
  • @IgnacioLago,感谢您提供的链接,已将其添加到答案中
  • @Dimi,只需将其他字符添加到您的否定字符类中,例如[/[^\p{L}0-9&\-]/]
猜你喜欢
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 2020-03-15
  • 2019-10-14
  • 2023-03-12
  • 2018-11-15
相关资源
最近更新 更多