Удаление одной кавычки из строки в 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);