preg_split, чтобы получить конечный номер из строки - PullRequest
0 голосов
/ 09 февраля 2012
$str = "check-me-01";
if(preg_match("#(\d){0,}$#",$str)) {
    $strArr = preg_split("#(\d){0,}$#",$str,2);
    print_r($strArr);
}

Я использую скрипт выше, чтобы получить 01 из строки, которая может быть любым числом.но я всегда получаю

Array ([0] => check-me- [1] =>)

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

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

Вы должны использовать положительный прогноз
Я также использовал POSIX скобки


PHP

$str = "check-me-01";
if (preg_match("#[[:digit:]]$#",$str)) {
    // the regex matches a zero length string, so just the position when it is true
    // the (?=regex) triggers a positive lookahead
    // it is true in this case, if you have many digits at the end of the string
    $strArr = preg_split("#(?=[[:digit:]]+$)#",$str,2);
    print_r($strArr);
}
0 голосов
/ 09 февраля 2012

Если вы пытаетесь получить 01 из этой строки, вы должны использовать просто preg_match , а не preg_split. Перейдите по этой ссылке и узнайте, как получить полученные совпадения.

Цитата:

int preg_match (строка $ pattern, строка $ subject [, массив & $ match [, int $ flags = 0 [, int $ offset = 0]]])

Примечание &$matches. Это то, что вы хотите посмотреть более внимательно.

preg_split будет использовать все, что совпадает в качестве разделителя: это проблема, с которой вы сталкиваетесь. Таким образом, все, что совпадает, не будет в результирующем массиве - только то, что находится с обеих сторон.

...