我有一个HTML表单,用户可以将文本输入title
字段,然后我创建了一个名为title.html
我的问题是用户可以在标题字段中输入空格和撇号,这些字段不能在html文件名中使用。我使用:
替换了带下划线的空格$FileName = str_replace(" ", "_", $UserInput);
但是,我似乎无法删除单引号?我尝试过使用:
$FileName = preg_replace("/'/", '', $UserInput);
但这需要test's
并将其转换为test\s.html
。
答案 0 :(得分:52)
使用您当前的str_replace方法:
$FileName = str_replace("'", "", $UserInput);
虽然很难看到,但第一个参数是双引号后跟单引号后跟双引号。第二个参数是两个双引号,两者之间没有任何内容。
使用str_replace,你甚至可以拥有一个你想要完全删除的字符串数组:
$remove[] = "'";
$remove[] = '"';
$remove[] = "-"; // just as another example
$FileName = str_replace( $remove, "", $UserInput );
答案 1 :(得分:10)
您可以在HTML实体中替换:
$FileName = preg_replace("/'/", "\'", $UserInput);
答案 2 :(得分:2)
您在删除不允许的字符时也可能更具限制性。以下正则表达式将删除所有不是字母,数字或下划线的字符:
$FileName = preg_replace('/[^\w]/', '', $UserInput);
您可能希望这样做以确保跨不同操作系统的文件名的最大兼容性。
答案 3 :(得分:0)
$replace_str = array('"', "'", ",");
$FileName = str_replace($replace_str, "", $UserInput);
答案 4 :(得分:0)
我将这个函数htmlspecialchars用于图像中的alt属性
答案 5 :(得分:0)
$test = "{'employees':[{'firstName':'John', 'lastName':'Doe'},{'firstName':'John', 'lastName':'Doe'}]}" ;
$test = str_replace("'", '"', $test);
echo $test;
$jtest = json_decode($test,true);
var_dump($jtest);
答案 6 :(得分:0)
试试这个。您可以使用以下内容删除'
和"
$FileName = str_replace(array('\'', '"'), '', $UserInput);