получить строку между двумя символами в php, используя preg_match или Symfony dom crawler - PullRequest
0 голосов
/ 26 октября 2018

У меня есть такая строка

Power.S04E10.You ......

Я хочу получить 04 и 10в строке

примечание: после s char и e char всегда две цифры.

в моем проекте я уже использую Symfony dom crawler

Я ценю любое решение сПроизводительность 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);

заранее спасибо

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете использовать

$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-демонстрацию и онлайн-демонстрацию регулярных выражений .

Я предполагаю, что у вас есть SXXEYYмежду точками, если нет, замените \. на \b, границы слов.

Детали шаблона

  • \. - точка
  • s - s или S
  • ([0-9]+) - Группа 1: одна или несколько цифр (вы можете ограничить количество повторений двумя, если вы используете ([0-9]{2}), если считаете,это будет работать лучше)
  • e - e или E
  • ([0-9]+) - ([0-9]+) - Группа 2: одна или несколько цифр (вы можете ограничить количество повторенийдо двух, если вы используете ([0-9]{2}), если считаете, что он будет работать лучше)
  • \. - . char

* $matches[1] содержит содержимое группы 1и $matches[2] содержит содержимое группы 2.

...