在PHP中用星号替换域名

时间:2018-09-29 15:28:50

标签: php string

我有此格式的域列表

domain1.com
domain2.net
domain3.org
domain4.info

我想在域名扩展名末尾之前用星号替换名称

*****.com
********.net
**********.org
*****.info

有可能这样做吗?

1 个答案:

答案 0 :(得分:0)

使用正则表达式Lookahead

来做到这一点的一种方法
$re = '/(.+?)(?=\.)/m'; // OR (.+?)(?=\.[a-zA-Z]{2,11})
$str = 'domain1.com
domain2.net
domain3.org
domain4.info';
$subst = '*******';

$result = preg_replace($re, $subst, $str);

输出:

*******.com 
*******.net
*******.org
*******.info

演示: https://3v4l.org/pdlS5

REGEX https://regex101.com/r/HPDhtA/2

按评论

<?php
$re = '/(.+?)(\.[a-zA-Z]{2,11})/m';
$str = 'domain1.com
domain2ddddddddd.net
domain3dfdfdf.org
domain4.info';
$result = [];
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
foreach($matches as $match){
    $result[] = str_repeat("*",strlen($match[1])).$match[2]; 
}
// Print the entire match result
echo implode(PHP_EOL,$result);

输出:

*******.com
****************.net
*************.org
*******.info

演示: https://3v4l.org/40IlJ

正则表达式: https://regex101.com/r/HPDhtA/3