从php中的字符串中删除单引号

时间:2010-10-11 02:41:22

标签: php

我有一个HTML表单,用户可以将文本输入title字段,然后我创建了一个名为title.html

的HTML文件

我的问题是用户可以在标题字段中输入空格和撇号,这些字段不能在html文件名中使用。我使用:

替换了带下划线的空格
$FileName = str_replace(" ", "_", $UserInput);

但是,我似乎无法删除单引号?我尝试过使用:

$FileName = preg_replace("/'/", '', $UserInput); 

但这需要test's并将其转换为test\s.html

7 个答案:

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