当前用户更新某些信息时,我正在复制某些文件。但是,由于在专门命名windows文件时我们不能有任何特殊的任何特殊字符,是否存在具体的正则表达式?发现的所有特殊字符都将被下划线替换,以保持简单。
答案 0 :(得分:1)
这取决于您要替换的特殊字符,但要替换所有非字字符和-
符号,您可以使用:
$new_value = preg_replace("/[^-\w]+/", "_", $original_value);
这将只留下-
,_
,a-z
(也是大写)和0-9
,并用下划线替换其余部分。
答案 1 :(得分:1)
最好的解决方案是使用像Slugify这样的“slugifier”,这比regexp更安全和测试,因为它可以用于所有编码和奇怪的字符。
使用Slugify的一个小例子
use Cocur\Slugify\Slugify;
$slugify = new Slugify();//for iconv translit
echo $slugify->slugify('Hello World!'); // hello-world
另一个lib是urlify来自Django项目的URLify.js的PHP端口:
echo URLify::filter ('фото.jpg', 60, "", true);
// "foto.jpg"
非常易于使用,也许是最佳解决方案。
或许你可以使用这个备用课程: https://github.com/mongator/behaviors/blob/master/src/Mongator/Behavior/Util/SluggableUtil.php
此致