[英]Find and split a string by the first character that is not 0
我想知道如何根據不為0的第一個字符分割字符串,例如
$ID = ABC-000000160810;
我想分割id,所以它看起來像這樣:
$split_ID = 160810;
我嘗試僅獲取最后6位數字,但是問題是6位數字可能並不總是一致的,因此只需要根據第一個非零數字進行拆分即可。 最簡單的方法是什么?
謝謝。
這是使用正則表達式的一種方式:
$id = 'ABC-000000160810';
preg_match('/-0*([1-9][0-9]*)/', $id, $matches);
$split_id = $matches[1];
如果只想刪除前導零,則可以使用ltrim 。
$ID = ABC-000000160810;
$split_ID = ltrim($str, '0');
使用ltrim刪除前導字符。
$id = 'ABC-00001234';
$numeric = ltrim(mb_substr($id, mb_strpos($id, '-') + 1), '0');
echo $numeric; // 1234
以上要求啟用mbstring
擴展名。 如果遇到錯誤,請啟用擴展或使用非多字節函數substr
和strpos
。 可能您應該養成使用mb_
string函數的習慣。
這也應該起作用:
const CHAR_MASK = 'a..zA..Z-0';
$id = 'ABC-00001234';
$numeric = ltrim($id, CHAR_MASK);
echo $numeric; // 1234
對於您的示例“ ABC-00000016081”,您可以使用正則表達式,該正則表達式將與第一部分匹配直到遇到非零為止,然后使用\\K
在最終匹配中不包含先前消耗的字符。
[^-]+
不匹配-
使用否定的字符類一次或多次 -
從字面上匹配 0+
一次或多次匹配零(如果希望不帶前導零的匹配,則可以使用0*
) \\K
重置報告的比賽的起點 [1-9][0-9]*
匹配以1 -9開頭的值 您可以減去ABC部分並乘以1使其成為一個數字。
$ID = "ABC-000000160810";
Echo substr($ID, 4)*1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.