之間的數字我有這個字符串:之間PHP:獲取2串
a:3:{i:0;i:2;i:1;i:3;i:2;i:4;}
我想號碼「:」和「:{」,即「3」。 我嘗試用戶substr和strpos,但沒有成功。 我在正則表達式的新手,這樣寫:
preg_match('/a:(.+?):{/', $v);
但其回報我1 感謝您的任何提示。
之間的數字我有這個字符串:之間PHP:獲取2串
a:3:{i:0;i:2;i:1;i:3;i:2;i:4;}
我想號碼「:」和「:{」,即「3」。 我嘗試用戶substr和strpos,但沒有成功。 我在正則表達式的新手,這樣寫:
preg_match('/a:(.+?):{/', $v);
但其回報我1 感謝您的任何提示。
如果你知道a:
總是在字符串的開頭,最簡單的方法是:
$array = explode(':', $string, 3);
$number = $array[1];
preg_match()
返回找到匹配的次數,這就是原因。你需要添加第三個參數。其中它將存儲匹配的$matches
。
preg_match
返回匹配數,在你的情況1匹配。
爲了讓比賽本身,使用了第三個參數:
$matches = array();
preg_match(/'a:(\d+?):{/', $v, $matches);
這麼說,我覺得串看起來像一個序列化數組,你可以用unserialize
反序列化,然後實際的陣列上使用count
(即$a = count(unserialize($v));
)。小心雖然userprovided序列串...
您可以使用sscanf
Docs從字符串獲得數:
# Input:
$str = 'a:3:{i:0;i:2;i:1;i:3;i:2;i:4;}';
# Code:
sscanf($str, 'a:%d:', $number);
# Output:
echo $number; # 3
這往往比使用preg_match
更簡單,當你想從下面的圖形字符串獲得一個特定的值。
這看起來像一個序列化的PHP數組(元素數量錯誤?)。爲什麼不反序列化它並在實際數組上使用'count()'? – knittl