[英]PHP preg_replace if number is bigger then 4 digits in phone number
我已經制作了替換字符串中的數字的函數,但是它替換了所有數字,如果字符串中的數字大於4位,我想使其工作,
function remove_details($string) {
$patterns = array();
$patterns[0] = '/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/';
$patterns[1] = '/([0-9]+[\- ]?[0-9]+)/';
$replacements = array();
$replacements[0] = '*****';
$replacements[1] = '*****';
$descf = preg_replace($patterns, $replacements, $string);
return $descf;
}
在這里,所有的數字都將被替換為字符串中的*,如果字符串中的數字大於4,我想替換,如果數字小於4,則保留它,因此除了電話號碼之外,其他數字將不會被替換。
這是一個簡短的腳本,用於處理您描述的數字:
$string = "random text 123454";
$pattern = "/\d{5,}/";
$descf = preg_replace($pattern, "*****", $string);
echo $descf;
請注意,它僅將輸入字符串中由四個或更多數字組成的數字替換為五顆星。 我尚未檢查您的電子郵件正則表達式邏輯,這也可能會出現問題。
無需正則表達式。
您可以使用substr,strlen和str_pad進行相同的操作。
通常,如果這樣的簡單任務,則regex會使用更多的內存和更高的性能。
$phone = 123456789;
Echo substr($phone, 0,4) . Str_pad("", strlen($phone)-4,"*");
// 1234*****
function remove_details($string) {
$patterns = array();
$patterns[0] = '/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/';
$patterns[1] = '/([0-9]+[\- ]?[0-9]+)/';
$replacements = array();
if(strlen($string)>4)
{
$replacements[0] = '*****';
$replacements[1] = '*****';
$descf = preg_replace($patterns, $replacements, $string);
}
$descf = preg_replace($patterns, $replacements, $string);
echo $descf;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.