2

- の後の 4305 という文字列の末尾から ID を取得しようとしています。以下のコードは左から右に機能し、150 を示しています。 - の後に 4305 を表示するには、右から左に機能させるにはどうすればよいですか?

  $mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
  $mystring = substr($mystring, 0, strpos($mystring, "-"));
  echo $mystring;

更新:これは私が必要とすることを行いますが、それを書くためのより良い方法があると確信しています:

  $mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
  $mystring = substr(strrev($mystring), 0, strpos(strrev($mystring), "-"));
  echo strrev($mystring);
4

5 に答える 5

5

を使用strrposして、文字列の最後のハイフンを取得し、この文字の後の残りの文字列を取得できます。

$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$mystring = substr($mystring, strrpos($mystring, "-") + 1);
echo $mystring;
于 2012-07-18T02:17:09.770 に答える
4

それを配列に分割-し、最後の要素を取り出します。

$mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
$parts = explode("-", $mystring);
echo array_pop($parts);

または、配列をそのままにしておく必要がある場合は、 を使用end()して最後の要素に進み、それを返します。

echo end($parts));

これは を使用するよりも効率的でstrrpos()はありませんが、それが問題にならない場合は、文字列インデックスについてあまり考える必要がなく、必要なものが最初または内部部分からプルするために必要な文字列操作を行うよりも、配列インデックスをプルする方が少し簡単です。

于 2012-07-18T02:17:22.460 に答える
2

あなたが私の同僚のように、すべてに正規表現を使用するのが好きなら...

  $mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
  preg_match('~-(\d+)$~', $mystring, $matches);
  echo $matches[1];
于 2012-07-18T02:19:54.480 に答える
0

最も簡単な方法は間違いなく爆発を使用することです。

分解を使用することにより、文字列を配列に分割し、インデックスを使用して個々の識別子として各部分にアクセスできます。

使用例:

  $mystring = "150-Adelaide-Street-Brisbane-Cbd-4305";
  $mystring = explode("-", $mystring);
  echo $mystring[count($mystring)-1]; //Extract the last item
于 2012-07-18T02:19:35.840 に答える
0

上記のコメントで Matthew が投稿したように、一致は 4 つのステップのみで行われるため、リバース スキャンの方が高速です。要件を PHP 構文に変換する「より適切な方法」はないと思います (これは、私が C を学んだときに彼らが教えてくれた方法でもあります)。構文):

echo substr($mystring, strrpos($mystring, "-") + 1);

PHP マニュアル.

于 2013-01-01T23:48:38.790 に答える