我正在寻找一些帮助,试图在文本字符串中替换撇号,然后可以用来创建目录。到目前为止,我有以下内容:
$fname = str_replace(' ', '_', $_POST['name']);
$fname1 = str_replace("'", "", $fname);
if (!file_exists($fname1)) {
mkdir($fname1, 0777, true);
}
问题是当使用撇号时,会使用反斜杠创建文件夹。例如,单词Test将创建文件夹Test \ s。我也将字符串插入数据库,这工作正常(删除撇号),它只是我遇到麻烦的文件夹创建。
非常感谢任何帮助/建议:)
答案 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)));
}
就像魅力一样