PHP copy()问题和特殊字符

时间:2013-11-20 16:41:40

标签: php regex filesystems

当前用户更新某些信息时,我正在复制某些文件。但是,由于在专门命名windows文件时我们不能有任何特殊的任何特殊字符,是否存在具体的正则表达式?发现的所有特殊字符都将被下划线替换,以保持简单。

2 个答案:

答案 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

此致