【问题标题】:How to strip a sentence just keep letters, numbers, spaces如何去掉句子只保留字母、数字、空格
【发布时间】:2013-10-25 08:18:57
【问题描述】:

我有很多句子需要清除所有特殊字符和标点符号(我只想保留字母、数字和空格),例如:

$string = "TB Avrupa ve Türkiye'nin en iyi oranlari ile Lider Bahis Sitesi!!";
$final_title = preg_replace('/[^a-z]+/i', '', $string); 

这会删除所有内容(带空格) 我需要保留空格我可以在上一行添加任何内容来实现这一点吗??

预期输出:

TB Avrupa ve Türkiyenin en iyi oranlari ile Lider Bahis Sitesi

【问题讨论】:

标签: regex


【解决方案1】:

I want to keep just the letters and numbers and spaces

您可以使用此正则表达式删除除英文字母、数字和空格以外的所有内容:

preg_replace('/[^a-z\d ]+/i', '', $string); 

【讨论】:

  • 正则表达式的哪一部分使它不区分大小写?是/i吗?
  • @DavidBrossard: a-z 部分,否则避免/i 需要使用/[^A-Za-z\d ]+/
  • @DavidBrossard 是的 i 在最后指定。
  • @DavidBrossard / 表示模式的开始和结束。 i 是不区分大小写的选项。
【解决方案2】:

只需包含您想要保留的任何字符:

'/[^a-z0-9 ]+/i'

【讨论】:

    【解决方案3】:

    您需要将您的正则表达式更改为:

    $final_title = preg_replace('/[^a-z0-9 ]+/i', '', $string);
    

    这将保留数字和空格。


    我不知道您的确切要求是什么,但是,ü 在某些语言中是有效的字母。

    如果你也想保留这些,你需要像这样制作一个正则表达式:

    $final_title = preg_replace('/[\p{L}0-9 ]+/i', '', $string);
    

    【讨论】:

      【解决方案4】:

      试试这个:

      preg_replace('/[^A-Z^a-z^0-9^şŞıİçÇöÖüÜĞğ ]+/i', '', $string); 
      

      【讨论】:

        猜你喜欢
        • 2012-01-24
        • 1970-01-01
        • 2012-04-09
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        相关资源
        最近更新 更多