簡體   English   中英

PHP正則表達式刪除下划線后的所有內容

[英]PHP Regular Expression to remove everything after an underscore

我有一個包含兩種格式的字符串的數組,這些是...

'number' e.g 55
'number_number' eg 65_12345

我需要生成一個正則表達式來刪除下划線和此后的任何字符,所以65_12345將變為65 ,任何人都可以建議一個簡單的表達式來執行此操作嗎?

為什么要使用正則表達式? 函數strstr可以很容易地做到這一點:

$num = '65_12345';
echo strstr($num, '_', true); // 65

要替換一組數字,所有數字都具有相同的格式:

$numArr = ['65_12345','223_43434','5334_23332'];

array_walk($numArr, function(&$v) {
    $v = strstr($v, '_', true);
});

print_r($numArr);

輸出:

Array
(
    [0] => 65
    [1] => 223
    [2] => 5334
)

使用preg_replace作為正則表達式方式

echo  preg_replace('~(\d+)_\d+~',"$1",'65_12345');

使用explode進行非正則表達式方式

echo explode('_','65_12345')[0];

這可以做你想要的,但為什么正則表達式?

#_.*#

快速版:

substr('65_678789', 0, strpos('65_678789', '_'));

如果正則表達式:

$string = preg_replace("/_.*/", "", $string);

_.*表示用下划線加下划線后的任何內容。

暫無
暫無

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

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