字符串替换mkdir的撇号

时间:2014-02-02 12:51:44

标签: php string replace mkdir

我正在寻找一些帮助,试图在文本字符串中替换撇号,然后可以用来创建目录。到目前为止,我有以下内容:

$fname = str_replace(' ', '_', $_POST['name']);
$fname1 = str_replace("'", "", $fname);
if (!file_exists($fname1)) {
    mkdir($fname1, 0777, true);
}

问题是当使用撇号时,会使用反斜杠创建文件夹。例如,单词Test将创建文件夹Test \ s。我也将字符串插入数据库,这工作正常(删除撇号),它只是我遇到麻烦的文件夹创建。

非常感谢任何帮助/建议:)

2 个答案:

答案 0 :(得分:1)

第1期: 不要使用任何$_REQUEST的值,因为$_GET$_POST未经过无限制。请参阅http://www.php.net/manual/en/filter.filters.sanitize.php

上的参考资料

2nd:file_exists检查现有文件,最好使用is_dir检查现有目录,通常你应该使用umask-wrap

获得权限
    if(!is_dir($target)) {
        $oldumask= umask(0);
        mkdir($target, 0777, true);
        umask($oldumask);
    }

第3名:你使用str_replace方法正确的方式。

作为最简单的方法,您可以使用数组进行多次替换。 但是还有很多其他复杂的方法。

$fname = filter_var($_POST['name'], FILTER_SANITIZE_URL); // or FILTER_SANITIZE_STRING or so
if ($fname && $fname != '') {
    $notwanted = array("'",'"',' ','-','+');
    $wanted = array('','','_','_','_');

    $fname = str_replace($notwanted, $wanted, $fname);
    if (!is_dir($fname)) {
        $oldumask= umask(0);
        mkdir($fname, 0777, true);
        umask($oldumask);
    }
}

希望这有助于迈出第一步

答案 1 :(得分:0)

另外: 我使用此函数来替换包括国际字符在内的任何内容,以获得干净的url conforme字符串,与文件夹创建或可读的站点URL一起使用

function makeurlstring($str) {
    $from = array("![ÄÆäæ]!u", "![ÀÁÂÃÅàáâãå]!u", "![ÖöØø]!u", "![ÒÓÔÕòóôõ]!u", "![Üü]!u", "![ÙÚÛùúû]!u", "![ÈÉÊËèéêë]!u", "![ÌÍÎÏ]!u", "![Ýý]!u", "![Çç]!u", "![ÐðþÞ]!u", "![Ññ]!u", "![Šš]!u", "![Žž]!u", "!ß!u", "!&!u", "!¡!u", "!§!u", "!€!u", "!¥!u", "!£!u", "![\"\'\?\s]!u", "![^a-z0-9_-]!u");
    $to = array('ae', 'a', 'oe', 'o', 'ue', 'u', 'e', 'i', 'y', 'c', 'th', 'n', 's', 'z', 'ss', 'und', '!', 'paragraph', 'euro', 'yen', 'pound', '_', '');
    return preg_replace($from, $to, strtolower(trim($str)));
}

就像魅力一样