Php 从字符串中获取一个子字符串并打印它

Php 从字符串中获取一个子字符串并打印它,php,string,variables,substring,preg-match,Php,String,Variables,Substring,Preg Match,这是我的字符串:在变量$raw中 电影名称:Ittefaq(2017)导演:Abhay Chopra明星:Sonakshi 辛哈,西德哈特马尔霍特拉,阿克沙耶卡纳发布日期:2017年11月3日 (印度)类型:神秘,惊悚格式:MatRoska(Mkv)文件大小: 850MB分辨率:1280x536运行时:01:45:31语言:印地语 字幕:英语[软编码]-多路编码器:MKVAGE(MC)团队 资料来源:Hon3y/ 现在我想从中提取“850MB” 注意:每次都会更改整个字符串。 但“文件大小”、“

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

电影名称:Ittefaq(2017)导演:Abhay Chopra明星:Sonakshi 辛哈,西德哈特马尔霍特拉,阿克沙耶卡纳发布日期:2017年11月3日 (印度)类型:神秘,惊悚格式:MatRoska(Mkv)文件大小: 850MB分辨率:1280x536运行时:01:45:31语言:印地语 字幕:英语[软编码]-多路编码器:MKVAGE(MC)团队 资料来源:Hon3y/

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

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

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

$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

我认为下面的模式将足够紧密,只捕获您需要的内容,而不会错误地在文本中获取其他内容

/Size: ([\d\.MGTB]+)/
它将接受数字、点和MB、GB、TB文件大小。
(如果文件大小带有点,例如1.35 GB)


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

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

将从
文件大小:
获取字符串,直到下一个空白字符。

这将不会捕获GB文件大小。我想要两个can u plz edt uranswer@Andreas,它会捕捉所有的东西,比如数字和字母。不!试试看,你就会明白。另外,不需要
a-z
它可能只会使它捕获到字符串的不正确部分,“8.5GB”怎么样?这是确切的原始字符串吗?这里有断线吗?
if (preg_match('~File Size: ([^\s]+)~', $raw, $matches)) {
    echo $matches[1];
}