[英]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.