0
$url = '/article/math/unit2/chapter3/para4';
$pattern = "\/article";

preg_match_all('/^'.$pattern.'(?:\/([^\/]+))+$/', $url, $matches);

print_r($matches);

出力は

Array
(
    [0] => Array
        (
            [0] => /article/math/unit2/chapter3/para4
        )

    [1] => Array
        (
            [0] => para4
        )
)

実は、以下のような配列を取得したいと思います。

Array
(
    [0] => math,
    [1] => unit2,
    [2] => chapter3,
    [3] => para4
)

このコードの何が問題になっていますか?

UPDATE2:$patternは動的なものです。「/article/ foo」、「/ article / foo/bar」などに変更される場合があります。

4

7 に答える 7

2

問題は、一致するたびに、その一致の出力が上書きされることです。

この場合、preg_matchよりも単純な展開の方が便利だと思います

編集: http: //php.net/manual/en/function.explode.php

$url = '/article/math/unit2/chapter3/para4';
$args = explode('/', $url);
// since you don't want the first two outputs, heres some cleanup
array_splice($args, 0, 2);
于 2012-11-01T06:34:00.153 に答える
2

PHP Explodeを使用できます[参照:http://php.net/manual/en/function.explode.php ]

$url = '/article/math/unit2/chapter3/para4';
$data = explode("/", $url);

/あなたの場合の区切り文字であること

于 2012-11-01T06:36:31.650 に答える
2

explode()を使用する

$url = '/article/math/unit2/chapter3/para4';
$arrz = explode("/", $url);
print_r($arrz);
于 2012-11-01T06:38:03.113 に答える
1

簡単に使用できますexplode()

参照: http: //php.net/manual/en/function.explode.php

<?php
    $url = '/article/math/unit2/chapter3/para4';

    $arr = explode("/", str_replace('/article/', '', $url));
    print_r($arr);

?>

上記のコードが出力されます、

Array
(
    [0] => math
    [1] => unit2
    [2] => chapter3
    [3] => para4
)
于 2012-11-01T06:36:46.410 に答える
1

代わりにexplode()を使用してみてください。

$url = '/article/math/unit2/chapter3/para4';
$matches = explode('/', $url);
$matches = array_slice($matches, 2); // drop the first 2 elements of the array - "" and "article"

print_r($matches);
于 2012-11-01T06:37:32.040 に答える
0
$url = '/article/math/unit2/chapter3/para4';
$url=str_replace('/article/','','/article/math/unit2/chapter3/para4');
print_r(explode('/','/article/math/unit2/chapter3/para4'));
于 2012-11-01T06:38:06.280 に答える
0

このタラをそのまま,出力で確認してください

<?php

$url = '/article/math/unit2/chapter3/para4';

$newurl = str_replace('/',',',$url);

$myarr = explode(',', $newurl);

$i = 0;
$c = count($myarr);

foreach ($myarr as $key => $val) {
    if ($i++ < $c - 1) {
        $myarr[$key] .= ',';
    }
}
$myarr = array_slice($myarr,2);
print_r($myarr);

出力-

Array
(
    [0] => math,
    [1] => unit2,
    [2] => chapter3,
    [3] => para4
)
于 2012-11-01T06:41:30.247 に答える