使用 preg_match 或 Symfony dom 爬虫获取 php 中两个字符之间的字符串
get the string between two char in php using preg_match or Symfony dom crawler
我有这样的字符串
Power.S04E10.You......
我想得到字符串
中的04
和10
注意:在 s 字符和 e 字符之后,它总是两位数。
在我的项目中,我已经使用了 Symfony dom 爬虫
我感谢任何使用 dom 爬虫或 preg_match
的解决方案
这里的性能是一个问题,因为代码被放置在有很多实例的循环中。
到目前为止,我编写的这段代码为我提供了上面字符串中的 s04e10
部分。我不知道如何分别获得 04
和 10
。
$matches = [];
$s = 'Power.S04E10.You.Cant.Fix.This.720p.&.1080p.NF.WEB-DL.DD5.1.x264-NTb';
$t = preg_match('/s([0-9]){2}e([0-9]){2}/i', $s, $matches);
提前致谢
您可以使用
$s = 'Power.S04E10.You.Cant.Fix.This.720p.&.1080p.NF.WEB-DL.DD5.1.x264-NTb';
if (preg_match('/\.s([0-9]+)e([0-9]+)\./i', $s, $matches)) {
echo $matches[1] . " - " . $matches[2]; // => 04 - 10
}
参见PHP demo and the online regex demo。
我假设点之间有 SXXEYY
,如果没有,请将 \.
替换为 \b
,字边界。
图案详情
\.
- 一个点
s
- s
或 S
([0-9]+)
- 第 1 组:一个或多个数字(如果您认为使用 ([0-9]{2})
效果更好,可以将重复次数限制为两个)
e
- e
或 E
([0-9]+)
- ([0-9]+)
- 第 2 组:一个或多个数字(如果你认为使用 ([0-9]{2})
效果更好,可以将重复次数限制为两次)
\.
- 一个 .
字符
$matches[1]
包含组 1 的内容,$matches[2]
包含组 2 的内容。
我有这样的字符串
Power.S04E10.You......
我想得到字符串
中的04
和10
注意:在 s 字符和 e 字符之后,它总是两位数。
在我的项目中,我已经使用了 Symfony dom 爬虫
我感谢任何使用 dom 爬虫或 preg_match
的解决方案这里的性能是一个问题,因为代码被放置在有很多实例的循环中。
到目前为止,我编写的这段代码为我提供了上面字符串中的 s04e10
部分。我不知道如何分别获得 04
和 10
。
$matches = [];
$s = 'Power.S04E10.You.Cant.Fix.This.720p.&.1080p.NF.WEB-DL.DD5.1.x264-NTb';
$t = preg_match('/s([0-9]){2}e([0-9]){2}/i', $s, $matches);
提前致谢
您可以使用
$s = 'Power.S04E10.You.Cant.Fix.This.720p.&.1080p.NF.WEB-DL.DD5.1.x264-NTb';
if (preg_match('/\.s([0-9]+)e([0-9]+)\./i', $s, $matches)) {
echo $matches[1] . " - " . $matches[2]; // => 04 - 10
}
参见PHP demo and the online regex demo。
我假设点之间有 SXXEYY
,如果没有,请将 \.
替换为 \b
,字边界。
图案详情
\.
- 一个点s
-s
或S
([0-9]+)
- 第 1 组:一个或多个数字(如果您认为使用([0-9]{2})
效果更好,可以将重复次数限制为两个)e
-e
或E
([0-9]+)
-([0-9]+)
- 第 2 组:一个或多个数字(如果你认为使用([0-9]{2})
效果更好,可以将重复次数限制为两次)\.
- 一个.
字符
$matches[1]
包含组 1 的内容,$matches[2]
包含组 2 的内容。