php - 使用 preg_replace 更改字符串名称删除 espace 重音和点,但允许点扩展
问题描述
我有一个代码,它可以删除点并允许点扩展,但重音看起来像:
Sin título => Sin_tÃ_tulo
$new_name = preg_replace("/\W(?=.*\.[^.]*$)/", "_", $string);
我想删除重音或更改下划线
解决方案
使用 intl 的两个命题(如果您的配置中缺少此模块,请安装它):
$tls = Transliterator::createFromRules("::Latin-ASCII; [^A-Za-z0-9] > '_' ");
echo $tls->transliterate("Sin título"); // Sin_titulo
或者:
$tls = Transliterator::createFromRules("::NFD; [^A-Za-z0-9] > '_' ");
echo $tls->transliterate("Sin título"); // Sin_ti_tulo
推荐阅读
- bootstrap-4 - Bootstrap4如何在调整大小时隐藏外部div时显示内部div?
- angular - Angular - 如何为复杂对象定义模型?
- scala - 我想使用三列进行计算并生成显示所有三个值的单列
- jquery - jQuery 根据使用 Array 和 if/else if 的其他单元格的值设置 td 单元格的值
- ios - Swift:UIBezierPath 填充 2 条路径的交集
- powershell - SQL Server EraseSystemHealthPhantomRecords() powershell 方法连接到错误的 SQL Server 实例
- sql-server - 使用 ODBC 连接和对象将 Excel VBA 连接到 sql server
- javascript - nodejs child_process 包仅在使用某些导入时无法用于 python 脚本
- mongodb - 从 MongoDB 中的同一数组返回具有两个字段的文档
- azure - Azure AD 身份验证重定向到主页