String 使用preg_match或Symfony dom crawler在php中获取两个字符之间的字符串
我有一根这样的绳子 电源。S04E10。你 我想获取字符串中的String 使用preg_match或Symfony dom crawler在php中获取两个字符之间的字符串,string,preg-match,String,Preg Match,我有一根这样的绳子 电源。S04E10。你 我想获取字符串中的04和10 注意:在s字符和e字符之后总是有两位数字 在我的项目中,我已经使用了symfonydomcrawler 我非常感谢使用dom crawler或preg_match的任何解决方案 性能是这里的一个问题,因为代码放在有大量实例的循环中 到目前为止,我编写的这段代码给出了上面字符串中的s04e10部分。我不知道如何分别获得04和10 $matches = []; $s = 'Power.S04E10.You.Cant.Fix.T
04
和10
注意:在s字符和e字符之后总是有两位数字
在我的项目中,我已经使用了symfonydomcrawler
我非常感谢使用dom crawler或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
}
请参阅和
我假设点之间有SXXEYY
,如果没有,用\b
字边界替换\.
图案细节
-一个点\。
-一个s
或s
s
-第1组:一个或多个数字(如果您使用([0-9]+)
,如果您认为它更有效,可以将重复次数限制为两次)([0-9]{2})
-一个e
或e
e
-([0-9]+)
-第2组:一个或多个数字(如果您使用([0-9]+)
,您可以将重复次数限制为两个,如果您认为这样做会更好)([0-9]{2})
-a\.
字符
$matches[1]
包含第1组的内容,$matches[2]
包含第2组的内容。我编辑了文章并附上了代码。我不知道什么是“捕获”。捕获组(…)
允许提取正则表达式匹配的部分。这段文字被称为捕获。因为你解释了细节。我有一个关于点字符的问题,你把它放在图案前后。在模式中写入更多细节是否有助于性能?@hamidreza我使用它不是为了性能,而是为了准确性。季节和事件值似乎出现在点之间。如果没有,请替换为\b
,以确保在单词边界处匹配s
和e\d+
<代码>/\bs([0-9]+)e([0-9]+)\b/i对。再次感谢,似乎有三种类型的文本Power.S04E07.你对我的脸撒谎.720p.和.1080p.NF Power S04E07.你对我撒谎720p和1080p WEBRip DD5.1 Power(2014)-04x03-你是那种人
你能写出与我相配的preg\u吗?我的意思是,有没有办法为上述情况写一篇预赛?如果主要问题不可读,我会将这三种类型添加到主要问题中here@hamidreza看,这已经适用于两种类型的字符串,并且将适用于所有三种类型的字符串。