首页 > 解决方案 > PHP - 用星号替换字符,除非有减号

问题描述

如何用星号替换字符串,除了第一个和最后一个字母但不是减号,以防万一。为了更好地说明我试图得到的内容: From : url-name To u**-***e

这是我到目前为止所拥有的:

function get_starred($str) {
        $len = strlen($str);
return substr($str, 0, 1).str_repeat('_', $len - 2).substr($str, $len - 1, 1);
}

标签: php

解决方案


您可以使用PCRE 动词跳过字符串的第一个字符、字符串的最后一个字符和任何-s。像这样:

(^.|-|.$)(*SKIP)(*FAIL)|.

https://regex101.com/r/YfrZ8r/1/

PHP 示例使用preg_replace

preg_replace('/(^.|-|.$)(*SKIP)(*FAIL)|./', '*', 'url-name');

https://3v4l.org/0dSPQ


推荐阅读