Php 如何使用'preg_replace()'隐藏部分ip地址和/或主机名?
我需要制作这些字符串Php 如何使用'preg_replace()'隐藏部分ip地址和/或主机名?,php,preg-replace,Php,Preg Replace,我需要制作这些字符串 192.168.0.1和some.subdomain.domain.com 变成 192.168.0.**和***.subdomain.domain.com 在一句话中使用preg\u replace()函数 可能吗 我试过了 preg_replace('/([0123456789]$)|(^(.[a-z][^\.]])/,'***',$a) 使用$a作为some.subdomain.domain.com和192.168.0.1 但我的模式似乎有问题 (可选):是否可以用星
192.168.0.1
和some.subdomain.domain.com
变成
192.168.0.**
和***.subdomain.domain.com
在一句话中使用
preg\u replace()
函数
可能吗
我试过了preg_replace('/([0123456789]$)|(^(.[a-z][^\.]])/,'***',$a)
使用
$a
作为some.subdomain.domain.com
和192.168.0.1
但我的模式似乎有问题
(可选):是否可以用星号将这些部分屏蔽为被屏蔽字母/数字的准确数量,例如
127.0.0.1->***.0.0.1
,10.4.8.2->***.4.8.2
,以及sub.domain.com->***.domain.com
,s.domain.com->***.domain.com
?对于第一个问题,preg_replace
可以使用数组作为第一个参数。因此,您可以尝试以下方法(目前无法测试):
对于第二个问题,我将尝试类似的方法(尚未测试):
如果你不知道,我明天会测试。嗯preg_replace()
有点慢,有更好的方法,如explode()
如果你想隐藏ip的最后一部分,请执行以下操作:
<?php
$ip = "192.168.0.1";
$ip_items = explode('.', $ip);
$filtered_ip = ''; //The var to store the filtered ip
foreach($ip_items as $item) {
if($item == end($ip_items)) { //check if its the last part of the IP
$ip_part = '***';
} else {
$ip_part = $item . '.';
}
$filtered_ip .= $ip_part;
}
echo $filtered_ip;
?>
结果:***.168.0.1.
编辑:对于第二个问题,您可以使用stru length
获取长度,并使用stru repeat
重复字符
例如:
<?php
$ip = "192.168.0.1";
$ip_items = explode('.', $ip);
$filtered_ip = ''; //The var to store the filtered ip
foreach($ip_items as $item) {
if($item == end($ip_items)) { //check if its the last part of the IP
$ip_part = str_repeat("*", strlen($item)) ;
} else {
$ip_part = $item . '.';
}
$filtered_ip .= $ip_part;
}
echo $filtered_ip;
?>
<?php
$ip = "192.168.0.1";
$ip_items = explode('.', $ip);
$filtered_ip = ''; //The var to store the filtered ip
foreach($ip_items as $item) {
if($item == end($ip_items)) { //check if its the last part of the IP
$ip_part = '***';
} else {
$ip_part = $item . '.';
}
$filtered_ip .= $ip_part;
}
echo $filtered_ip;
?>
<?php
$ip = "192.168.0.1";
$ip_items = explode('.', $ip);
$filtered_ip = ''; //The var to store the filtered ip
foreach($ip_items as $item) {
if($item == $ip_items[0]) { //check if its the first part of the IP
$ip_part = '***.'; //we added the '.' to that one because its the first item
} else {
$ip_part = $item . '.';
}
$filtered_ip .= $ip_part;
}
echo $filtered_ip;
?>
<?php
$ip = "192.168.0.1";
$ip_items = explode('.', $ip);
$filtered_ip = ''; //The var to store the filtered ip
foreach($ip_items as $item) {
if($item == end($ip_items)) { //check if its the last part of the IP
$ip_part = str_repeat("*", strlen($item)) ;
} else {
$ip_part = $item . '.';
}
$filtered_ip .= $ip_part;
}
echo $filtered_ip;
?>