0
$str = "check-me-01";
if(preg_match("#(\d){0,}$#",$str)) {
    $strArr = preg_split("#(\d){0,}$#",$str,2);
    print_r($strArr);
}

上記のスクリプトを使用して、任意の数値の文字列から01を取得しています。しかし、私はいつも得ます

配列([0] => check-me- [1] =>)

誰かがこれで私を助けることができますか?

4

2 に答える 2

0

その文字列から01を取得しようとしている場合は、preg_splitではなくpreg_matchのみを使用する必要があります。そのリンクにアクセスして、結果の一致を取得する方法を調べてください。

引用:

int preg_match(string $ pattern、string $ subject [、array&$ matches [、int $ flags = 0 [、int $ offset = 0]]])

&$matches。それはあなたがもっと詳しく見たいものです。

preg_splitは、区切り文字として一致するものをすべて消費します。これが、直面している問題です。したがって、一致するものはすべて結果の配列には含まれず、どちらかの側にあるものだけが含まれます。

于 2012-02-09T15:25:04.663 に答える
0

ポジティブルックアヘッドを使用する必要があります
私も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);
}
于 2012-02-09T15:32:41.960 に答える