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

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

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

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

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

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

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

Ответы

Ответ 1

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

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

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

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

$remove[] = "'";
$remove[] = '"';
$remove[] = "-"; // just as another example

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

Ответ 2

Вы можете заменить в HTML entitiy:

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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