Удаление одной кавычки из строки в php

У меня есть HTML-форма, в которой пользователь может вводить текст в поле title , тогда у меня есть php, создающий HTML-файл с названием title.html

Моя проблема заключается в том, что пользователи могут вводить пробелы и апострофы в поле заголовка, которые не могут использоваться в имени файла html. Я заменил пробелы символами подчеркивания, используя:

 $FileName = str_replace(" ", "_", $UserInput); 

Однако я не могу удалить одиночные кавычки? Я пробовал использовать:

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

но это взяло test's и превратило его в test\s.html .

Используя текущий метод str_replace:

 $FileName = str_replace("'", "", $UserInput); 

Хотя это трудно понять, первым аргументом является двойная кавычка, за которой следует одна цитата, за которой следует двойная кавычка. Второй аргумент – две двойные кавычки, между которыми нет ничего.

С str_replace вы можете даже иметь массив строк, который хотите полностью удалить:

 $remove[] = "'"; $remove[] = '"'; $remove[] = "-"; // just as another example $FileName = str_replace( $remove, "", $UserInput ); 

Вы можете подставить в HTML entitiy:

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

Вы также можете быть более ограничительным при удалении запрещенных символов. Следующее регулярное выражение удалит все символы, которые не являются буквами, цифрами или символами подчеркивания:

 $FileName = preg_replace('/[^\w]/', '', $UserInput); 

Возможно, вы захотите сделать это, чтобы обеспечить максимальную совместимость имен файлов в разных операционных системах.

Я использовал эту функцию htmlspecialchars для атрибутов alt в изображениях

 $test = "{'employees':[{'firstName':'John', 'lastName':'Doe'},{'firstName':'John', 'lastName':'Doe'}]}" ; $test = str_replace("'", '"', $test); echo $test; $jtest = json_decode($test,true); var_dump($jtest); 
 $replace_str = array('"', "'", ","); $FileName = str_replace($replace_str, "", $UserInput); 

Попробуй это. Вы можете разделить только ' и " с помощью:

 $FileName = str_replace(array('\'', '"'), '', $UserInput);