2

文字列「123x456x78」がある場合、それを分解して、最初の要素として「123」、2番目の要素として「456」を含む配列を返すにはどうすればよいですか?基本的に、「x」が後に続く文字列を取得します(これが、「78」がスローされる理由です)。正規表現をいじっていますが、問題があります。

ありがとう!

編集:文字列が「123x456x78x」の場合、「123」、「456」、「78」の3つの要素が必要になります。基本的に、「x」に続く領域ごとに、次の「x」まで文字列を記録する必要があります。

4

7 に答える 7

3

さまざまな方法がありますが、これはあなたが試していた正規表現です:

$str = "123x456x78";
preg_match_all("/(\d+)x/", $str, $matches);
var_dump($matches[1]);

出力:

array(2) { [0]=> string(3) "123" [1]=> string(3) "456" }
于 2013-01-15T06:17:09.210 に答える
2
$arr = explode("x", "123x456x78");

その後

unset($arr[2]);

あなたが本当にその貧しい78に耐えられないなら。

于 2013-01-15T06:14:04.307 に答える
1

爆発する

$string='123x456x78';

$res = explode('x', $string);
if(count($res) > 0) {
    echo $res[0];
    if(count($res) > 1) {
        echo $res[1];
    }
}
于 2013-01-15T06:14:07.440 に答える
1
$var = "123x456x78";
$array = explode("x", $var);
array_pop($array);
于 2013-01-15T06:14:55.520 に答える
0

以下のコードを使用して爆発させます。それはうまくいきます!

   <?php
    $str='123x456x78';
    $res=explode('x',$str);
    unset($res[count($res)-1]); // remove last array element
    print_r($res);
    ?>
于 2013-01-15T06:15:32.597 に答える
0

最後の結果を分解して削除するには:

$string='123x456x78'; // original string

$res = explode('x', $string); // resulting array, exploded by 'x'

$c = count($res) - 1; // last key #, since array starts at 0 subtract 1

unset($res[$c]); // unset that last value, leaving you with everything else but that.
于 2013-01-15T06:16:18.613 に答える
0

私はすべて正規表現に賛成ですが、この場合、PHPの配列関数を使用する方が簡単かもしれません...

$result=array_slice(explode('x',$yourstring),0,-1);

これは、explode によって返された最後の要素のみに「x」が続かないため、機能するはずです。'x' で終わる場合、explode が空の文字列を最後の要素として追加するかどうかはわかりませんが、それをテストする必要があるかもしれません...

于 2013-01-15T06:17:39.490 に答える