【问题标题】:Extract strings only from a line in php仅从 php 中的一行中提取字符串
【发布时间】:2014-08-19 15:27:30
【问题描述】:

我正在使用explode 仅从整行中提取字符串。但是使用这个:

$array = explode(" ", $line);

它只用一个空格而不是单词来分割行。例如,如果 $line 是

$line="word1  word2    word3"

那么我在数组中的条目之间也有空格(它包含:“word1”、“word2”和“word3”,但也有一个或两个“”)。

有谁知道如何只获取数组中的三个条目“word1”、“word2”和“word3”?

【问题讨论】:

    标签: php string explode


    【解决方案1】:

    使用 preg_split 分割一个或多个空白字符:

    $array = preg_split('/\s+/', $line);
    

    explode(在字符串上拆分)不同,preg_split 在正则表达式上拆分,因此更加灵活。如果您不需要为分隔符使用正则表达式,则应改为使用explode

    【讨论】:

      【解决方案2】:

      str_word_count() 与格式代码或 1 或 2 以及指示数字应视为单词的一部分的字符列表一起使用,因为这也将处理针对标点符号的拆分

      $array = str_word_count($line, 1, '0123456789');
      

      【讨论】:

      • 经常被遗忘的 PHP 函数之一,因为大多数人在文档中扫描它只会将其视为计算单词频率的一种方式(0 默认格式代码参数)... . 最大的缺点是它不是二进制安全的
      【解决方案3】:

      我个人会使用 Tom Fenech 的答案,但对于您现有的代码:

      $array = array_filter(explode(" ", $line));
      

      【讨论】:

        【解决方案4】:

        您可以使用数组过滤器删除空数组值:

         $array = array_filter(explode(" ", $line));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-18
          • 2014-06-24
          • 2021-11-14
          • 2012-01-02
          • 1970-01-01
          • 2022-06-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多