0

私はこのようなhtacessルールを持っています:

RewriteRule ^([A-z])([0-9]+)-([^/]*)?$ index.php?tt=$1&ii=$2&ll=$3

同じことができるPHP関数はありますか?
何かのようなもの:

$A = XXXX_preg_match("([A-z])([0-9]+)-([^/]*)" , "A123-boooooo");
// $A become to =array("A","123","boooooo")
4

3 に答える 3

1

これら 3 つの値を取得するだけの場合は、次のpreg_matchように out-parameter を渡すことができます。

preg_match(
    '~^([A-z])([0-9]+)-([^/]*)$~' ,
    'A123-boooooo',
    $matches
);

$fullMatch = $matches[0]; // 'A123-boooooo'
$letter = $matches[1];    // 'A'
$number = $matches[2];    // '123'
$word = $matches[3];      // 'boooooo'

// Therefore
$A = array_slice($matches, 1);

すぐに置き換えたい場合は、次を使用しますpreg_replace

$newString = preg_replace(
    '~^([A-z])([0-9]+)-([^/]*)$~',
    'index.php?tt=$1&ii=$2&ll=$3',
    'A123-boooooo
);

これらのドキュメントは通常、詳細情報を得るのに非常に役立ちます。

于 2012-10-31T12:57:07.350 に答える
1
preg_match('/([a-zA-Z])(\d+)-([^\/]+)/', 'A123-boooooo', $A);
array_shift($A);

出力: print_r($A);

Array
(
    [0] => A
    [1] => 123
    [2] => boooooo
)
于 2012-10-31T12:57:42.123 に答える
0

preg_match docによると

preg_match("~([A-z])([0-9]+)-([^/]*)~" , "A123-boooooo", $matches);
print_r($matches);

出力:

Array
(
    [0] => A123-boooooo
    [1] => A
    [2] => 123
    [3] => boooooo
)
于 2012-10-31T12:56:58.507 に答える