【问题标题】:grab a substring from a string and print it从字符串中获取子字符串并打印
【发布时间】:2018-03-02 08:10:45
【问题描述】:

这是我的字符串:在变量 $raw 中

电影名称:Ittefaq (2017) 导演:Abhay Chopra 主演:Sonakshi Sinha、Sidharth Malhotra、Akshaye Khanna 发布日期:2017 年 11 月 3 日 (印度) 类型:神秘、惊悚 格式:MatRoska (Mkv) 文件大小: 850MB 分辨率:1280x536 运行时间:01:45:31 语言:印地语 字幕:英文 [Softcoded] - Muxed Encoder: MkvCage (MC) Team 来源:Hon3y/

现在我想从中提取“850MB”。

注意:整个字符串每次都会改变。 但是“文件大小:”、“分辨率”等关键字保持不变,但它们的值会发生变化。

我只想从中提取文件大小的值。

【问题讨论】:

  • 这是准确的原始字符串吗?这里有换行符吗?

标签: php string variables substring preg-match


【解决方案1】:

你得到所有可能的值,你可以使用:

if (preg_match('~File Size: ([^\s]+)~', $raw, $matches)) {
    echo $matches[1];
}

将从File Size: 获取字符串,直到下一个空白字符。

【讨论】:

    【解决方案2】:

    我认为以下模式将足够紧凑,仅捕获您需要的内容,而不是错误地在文本中获取其他内容。

    /Size: ([\d\.MGTB]+)/
    

    它将接受数字、点和 MB、GB、TB 文件大小。
    (如果文件大小带有点,例如 1.35 GB)

    preg_match("/Size: ([\d\.MGTB]+)/", $raw, $match);
    

    【讨论】:

      【解决方案3】:
      $raw = 'Movie Title: Ittefaq (2017) Director: Abhay Chopra Stars: Sonakshi Sinha, Sidharth Malhotra, Akshaye Khanna Release Date: 3 November 2017 (India) Genres: Mystery, Thriller Format: MatRoska (Mkv) File Size: 850MB Resolution: 1280x536 Runtime: 01:45:31 Language: Hindi Subtitles: English [Softcoded] - Muxed Encoder: MkvCage (MC) Team Source: Hon3y /';
      
      $matches = [];
      preg_match("/Size: ([\da-zA-Z]+)/", $raw, $matches);
      
      echo $matches[1];
      

      上面的例子会输出:

      850MB
      

      【讨论】:

      • 这不会捕获 GB 文件大小。
      • 我想要两个都可以请你回答一下
      • @Andreas,它将捕获数字和字母等所有内容。
      • 不!试试看,你会看到的。也不需要a-z 它可能只会让它捕获字符串的不正确部分
      • “8.5GB”呢?
      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2013-06-27
      相关资源
      最近更新 更多