亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 preg_match 將字符串中的數字存儲在數組中

使用 preg_match 將字符串中的數字存儲在數組中

PHP
海綿寶寶撒 2022-05-27 10:29:53
我需要檢測在字符串中找到數字的次數。如果字符串是"1 ssdsdsd 2"我需要一個數組[1,2]。如果字符串是"1 a"我需要一個數組,例如:[1].通過我的以下嘗試,我很接近,但我最終在那里得到了重復的數字。Preg match 似乎更適合我的需要,但也可以重復匹配。知道這是為什么嗎?我很感激有關如何完成此任務的任何建議。輸入  preg_match_all("/([0-9]+)/", trim($s), $matches); //$s = "1 2", output below  //preg_match("/([0-9]+)/", trim($s), $matches); //$s = "1 .", outputs [1,1]輸出Array(    [0] => Array        (            [0] => 1            [1] => 2        )    [1] => Array        (            [0] => 1            [1] => 2        ))
查看完整描述

3 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

刪除捕獲組,

preg_match_all("/[0-9]+/", trim($s), $matches);

匹配數組中的第一個元素是正則表達式的完全匹配,第二個是捕獲組。


查看完整回答
反對 回復 2022-05-27
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

preg_split()是這項工作的理想工具,因為它將返回一個扁平的索引數字數組。


用于\D+在出現一次或多次非數字字符時分解。使用函數標志確保輸出數組中沒有空元素——這消除了提前修剪的需要。


代碼:(演示)


var_export(

    preg_split(

        '/\D+/',

        $s,

        0,

        PREG_SPLIT_NO_EMPTY

    )

);


查看完整回答
反對 回復 2022-05-27
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

您可以選擇刪除所有非數字字符并獲取strlen()


echo strlen(preg_replace('/[^0-9]/', '', '1 ssdsdsd 2')); // 2 digits

echo strlen(preg_replace('/[^0-9]/', '', '1 ssd324sd567s.d6756 2')); // 12 digits

echo strlen(preg_replace('/[^0-9]/', '', '123456789')); // 9 digits

如果你知道 PHP 字符串可以通過它們的索引位置訪問,那么你可以使用類似的東西:


echo preg_replace('/[^0-9]/', '', '9 ssdsdsd 5')[0]; // outputs 9 because the resulting string is '95' and position zero's value is 9


查看完整回答
反對 回復 2022-05-27
  • 3 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號