php - 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);
}
解决方案
您可以使用PCRE 动词跳过字符串的第一个字符、字符串的最后一个字符和任何-
s。像这样:
(^.|-|.$)(*SKIP)(*FAIL)|.
https://regex101.com/r/YfrZ8r/1/
PHP 示例使用preg_replace
preg_replace('/(^.|-|.$)(*SKIP)(*FAIL)|./', '*', 'url-name');
推荐阅读
- python - 提高 Pandas pivot_table 中的调和平均效率
- reactjs - 无法使用react和phoenix导入jpg文件
- python - 如何遍历我的帖子列表以显示来自 taggit 的标签?
- c# - BlogEngine.NET - 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的部分是错误的
- java - AEM-6.3 构建失败,Java-1.8.0_211 和 Maven-3.3.9
- r - 如果列存在或不存在于R中,如何进行计算?
- c# - 如何在 C# 中验证图片子句?
- python - 错误:TypeError:参数 1 必须是字符串或 unicode 对象
- durandal - Durandal.js 的所有版本是否都支持响应式网站开发
- html - Strange whitespace appears on specific resolutions