簡體   English   中英

使用preg_replace()?

[英]Using preg_replace()?

我正在嘗試理解preg_replace()函數,但它對我來說看起來很神秘。 這里查看有關函數的文檔。 我知道它由三件事組成 - 主題,匹配模式以及替換它的內容。

我目前正試圖通過替換不是數字的任何東西來“消毒”數字輸入。 到目前為止,我知道我需要允許數字0-9,但刪除任何不是數字的內容並將其替換為:“”。

而不是逃避我需要的每一個角色,是否有一些方法可以簡單地不允許任何其他字符而不是數字0-9? 此外,如果有人能夠闡明“匹配模式”部分如何運作......

如果要清理字符串以替換不是數字的任何內容,您可以編寫一個匹配不在列表中的字符的正則表達式。

模式[0-9]將匹配所有數字。 放置一個插入符號( ^在設定的開始)相匹配的一切, 是不是在集: [^0-9]

$result = preg_replace('/[^0-9]/', '', $input);

請注意,這也將過濾掉句點/小數點和其他數學標記。 您可以通過允許周期來包括句點/小數點(允許浮點數):

$result = preg_replace('/[^0-9.]/', '', $input);

請注意,句點( . )是正則表達式中的通配符。 它不需要在括號表達式中進行轉義,但它可以在模式的其他位置進行轉義。

preg_replace()比你想象的容易:

$p = "/[A-Z a-z]/";
$r = "";
$s = "12345t7890";

echo preg_replace($p, $r, $s);

輸出“123457890” - 注意沒有'6'

is_numeric(); 是不是解決了你的問題?

暫無
暫無

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

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