0

「My String 2」のような文字列があり、num 値「2」のみを取得したい。以下に示すようにしようとしましたが、結果は 0 に等しくなります。

$AlphaSURV1="My String 2";
$NumSURV1=intval($AlphaSURV1);
echo $NumSURV1;

それを解決するのを手伝ってもらえますか?

ありがとう

4

2 に答える 2

1

文字列の最後の数字グループをキャプチャするには、正規表現を使用できます。

$str = "123 test 29";
preg_match("/[0-9]+$/", $str, $matches);
var_dump($matches[0]); # 29

これは、空白の欠如、先頭の数字、文字列の最後の複数の数字など、次のすべての場合に正しく機能します。

"1"        => 1
"test 2"   => 2
"test 34"  => 34
"5 test 6" => 6
"7test8"   => 8

文字列の最後の文字を取得して数値のように扱いたい場合は、次を使用できることに注意してください。

$str = "My String 2";

$digit = intval(substr($str, -1));
于 2012-06-04T14:20:34.933 に答える
1

数字以外に一致する正規表現を使用して、数字以外の文字を取り除くことができます。

$NumSURV1 = preg_replace("/[^0-9]/", "", $AlphaSURV1);

さて、元の投稿に対するあなたのコメントにより、この回答は無効になります。"3 some text 5"私が与えたpreg_replace()答えを入れると"35"、 だけでなくが得られます"5"。私が大雑把な推測をして、すべての数字ではなく文字列からテキストの最後のチャンクだけを取り出したいと仮定し、スペースがあると仮定すると、次のようにする必要があります。

$exp = explode(" ", $AlphaSURV1);
$NumSURV1 = $exp[count($exp) - 1];

これは醜いですが、入力文字列をスペースで分割し、結果の配列の最後の要素を提供します。

@nickbのおかげで、2番目の答えをよりきれいに行う方法:

$exp = explode(" ", $AlphaSURV1);
$NumSURV1 = end($exp);

(ちなみに、動作するように実行できます$NumSURV1 = end(explode(" ", $AlphaSURV1));Strict Standards: Only variables should be passed by reference、サーバーで厳密なチェックが有効になっているとエラーが発生します)

于 2012-06-04T13:45:46.467 に答える