在PHP中,我們經常會遇到需要從字符串中提取數字的情況。本文將介紹如何使用PHP 7的函數和方法來取出字符串中的數字,并通過舉例來說明其用法和注意事項。
在PHP 7中,可以使用preg_match_all函數結合正則表達式來提取字符串中的數字。下面是一個示例:
$str = "12怎么取出數字php7juo"; preg_match_all('/\d+/', $str, $matches); print_r($matches[0]);
運行上述代碼,將輸出數組 [12,7],即從字符串中成功取出了數字。值得注意的是,這里使用了 '\d+' 作為正則表達式來匹配數字。其中 '\d' 表示匹配任意一個數字字符,而加號 '+' 表示匹配一個或多個。因此,正則表達式 '\d+' 能夠精確地提取出字符串中的數字。
另外,如果字符串中包含多個數字,我們也可以使用preg_match_all函數的第三個參數來獲取每個匹配的位置。下面是一個例子:
$str = "12怎么取出數字php7juo,13和18也是數字"; preg_match_all('/\d+/', $str, $matches, PREG_OFFSET_CAPTURE); foreach ($matches[0] as $match) { echo "數字: " . $match[0] . " 開始的位置: " . $match[1] . "
"; }
運行上述代碼,將輸出:
數字: 12 開始的位置: 0 數字: 7 開始的位置: 16 數字: 13 開始的位置: 28 數字: 18 開始的位置: 32
通過設置PREG_OFFSET_CAPTURE選項,我們不僅可以獲取數字,還可以得知它們在原字符串中的起始位置。
除了使用正則表達式外,PHP 7還提供了一些新的字符串處理函數,可以更方便地提取數字。例如:
$str = "12怎么取出數字php7juo"; $numbers = str_replace(range(0, 9), '', $str); echo $numbers;
運行上述代碼,將輸出字符串 "怎么取出數字phpjuo"。這是因為我們使用了str_replace函數將0到9之間的所有字符替換為空字符串,從而得到了字符串中的數字。
需要注意的是,上述方法僅適用于將字符串中的數字移除。如果要獲取單獨的數字,則需要進一步處理。例如:
$str = "12怎么取出數字php7juo"; $onlyNumbers = preg_replace('/[^0-9]/', '', $str); echo $onlyNumbers;
運行上述代碼,將輸出字符串 "127"。我們使用了preg_replace函數,通過正則表達式 '/[^0-9]/' 將除了數字以外的其他字符替換為空字符串,從而得到了只包含數字的字符串。
綜上所述,使用PHP 7可以通過正則表達式和其他字符串處理函數來從字符串中提取數字。我們可以根據實際需要選擇使用不同的方法,以滿足提取數字的需求。