簡體   English   中英

如何提取字符串的num部分

[英]How to extract num part of a string

我有一個像“我的字符串2”的字符串,我喜歡只獲得num值“2”。 我試着這樣做,你看到下面但結果是0到1。

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

你能幫我解決一下嗎?

謝謝

您可以使用與非數字匹配的正則表達式去除非數字字符:

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

好吧,您對原始帖子的評論使得這個答案無效。 如果你將"3 some text 5"放入我給出的preg_replace()答案中,你將獲得"35" ,而不僅僅是"5" 如果我猜測並假設你只想要字符串中的最后一塊文本而不是所有數字,並假設有空格,你應該這樣做:

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

哪個很難看,但它會將你的輸入字符串拆分為空格,並為你提供結果數組中的最后一個元素。

感謝@nickb做出第二個答案的更漂亮的方法:

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

(順便說一句,你可以$NumSURV1 = end(explode(" ", $AlphaSURV1));因為它有效,但是你會得到一個Strict Standards: Only variables should be passed by reference如果你在你的網站上啟用了嚴格的檢查,那么Strict Standards: Only variables should be passed by reference錯誤Strict Standards: Only variables should be passed by reference服務器)

為了捕獲字符串中的最后一組數字,您可以使用正則表達式:

$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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM