регулярное выражение в URL и XPath - PullRequest
0 голосов
/ 02 июня 2019

Я использовал xpath для сканирования всех значений href в ul li a.

foreach ($domExemple as $exemple) {

  $result[$i++] = $exemple->nodeValue;

}

Где $exemple->nodeValue - строка типа / produit / 3017620424403 / nutella Я хочу получить все числа между двумя / Они имеют разную длину ...

Я пробовал это регулярное выражение : /\/([0-9]{0,})/i

Но это не очень хорошо ...

Кто-нибудь объяснит мне и поможет мне?

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

В вашем паттерне вы также должны добавить косую черту в конце:

/\/([0-9]{0,})\//i
              ^^ 

Вам не нужно экранировать косую черту, если вы переходите на другой разделитель, такой как, например, ~, и {0,} можно записать как *, но также будет соответствовать пустой строке. Вы можете обновить его, чтобы вместо него использовать +, чтобы соответствовать 1+ раз цифре.

$pattern = "~/([0-9]+)/~i";

Ваше значение в первой группе захвата. Обратите внимание, что начальная граница отсутствует, поэтому если в строке есть несколько частей с / digits /, то они также будут сопоставлены.

Regex demo

Другим вариантом может быть сопоставление обеих косых черт от начала строки и использование \K, чтобы забыть, что было найдено. Затем сопоставьте цифры 1+ и подтвердите, что справа это /

^/[^/]+/\K\d+(?=/)

Regex demo

0 голосов
/ 02 июня 2019

Предполагая, что URL-адрес имеет формат, указанный выше, попробуйте это:

@(/[0-9]*/)@

@ выбраны в качестве разделителей, поэтому нам не придется избегать косых черт и иметь грязный код.

Если вы хотите только цифры, используйте это:

@/([0-9]*)/@

Приступы сгруппируют то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...