【问题标题】:Why is preg_replace removing umlauts?为什么 preg_replace 删除变音符号?
【发布时间】:2016-11-15 11:37:40
【问题描述】:

我正在尝试为我的搜索表单创建一个 preg_replace,但它也不断替换变音符号...

Code:
    $zoekwoord = $this->input->get('q', TRUE);
    $zoekwoord = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]u/s', '', $zoekwoord);

Any idea how to keep special chars? (like ö)

【问题讨论】:

  • 试试'/[^\w %[\].()%&-]+/u'
  • 好的,谢谢!它起作用了:D
  • 很高兴它起作用了,我在下面添加了答案和解释。

标签: codeigniter preg-replace special-characters


【解决方案1】:

您定义了删除除 ASCII 字母、数字、_ 和一些特殊字符之外的任何字符的模式。

您需要将[A-Za-z0-9_] 替换为\w,并使用/u 修饰符使其支持Unicode。

使用

'/[^\w %[\].()%&-]+/u'

请注意,只有] 需要在此字符类中进行转义。 /s 修饰符是多余的,我相信你打错了,在模式末尾添加了 u

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2011-06-13
    • 2013-08-04
    • 2014-12-30
    相关资源
    最近更新 更多