Удалить кавычки из начала и конца строки в PHP
Мне нужно избавиться от » (двойных кавычек) в конце и в начале, если они существуют, но если в String есть такой символ, тогда он должен быть оставлен. Пример:
7 ответов
Если второй символ также » ‘или предпоследний тоже, то он также будет удален. Если они значительны, то обрезка падает. Это немного зависит от фактических данных. См. Ответ пользователя 783322.
Проще говоря: «trim () удалит последовательные кавычки с начала или с конца. Однако мы просто хотим удалить только самые первые и самые последние кавычки. Это означает, что это не должно быть приемлемым ответом.
Это не должно быть принятым ответом. Что если цитата является частью строки? «this is double-quote -> «» выведет this is double-quote -> что означает, что вы пропустили неотъемлемую часть строки.
У меня была аналогичная потребность и я написал функцию, которая удалит лидирующие и завершающие одиночные или двойные кавычки из строки:
/** * Remove first and end quote from a quoted string of text * * @param mixed $text */ function stripQuotes($text) < $unquoted = preg_replace('/^(\'(.*)\'|"(.*)")$/', '$2$3', $text); return $unquoted; >
Это приведет к выводам, перечисленным ниже:
Input text Output text -------------------------------- No quotes => No quotes "Double quoted" => Double quoted 'Single quoted' => Single quoted "One of each' => "One of each' "Multi""quotes" => Multi""quotes '"'"@";'"*&^*'' => "'"@";'"*&^*'
trim удалит все экземпляры char с начала и конца, если он соответствует шаблону, который вы предоставляете, поэтому:
$myValue => '"Hi"""""'; $myValue=trim($myValue, '"');
Здесь можно удалить только первый и последний char, если они совпадают:
$output=stripslashes(trim($myValue)); // if the first char is a " then remove it if(strpos($output,'"')===0)$output=substr($output,1,(strlen($output)-1)); // if the last char is a " then remove it if(strripos($output,'"')===(strlen($output)-1))$output=substr($output,0,-1);
Так как этот поток должен был быть убит давно, я не мог не ответить тем, что я назвал бы самым простым ответом. Я заметил, что эта тема вновь появляется на 17-м, поэтому я не чувствую себя так же плохо.:)
Использование образцов, предоставленных Стивом Чемберсом;
Input text Output text -------------------------------- No quotes => No quotes "Double quoted" => Double quoted 'Single quoted' => Single quoted "One of each' => One of each "Multi""quotes" => Multi""quotes '"'"@";'"*&^*'' => "'"@";'"*&^*'
Это только когда-либо удаляет первую и последнюю цитату, она не повторяется, чтобы удалить дополнительный контент и не заботится о совпадении концов.
Если вам нравится производительность по ясности, это способ:
// Remove double quotes at beginning and/or end of output $len=strlen($output); if($output[0]==='"') $iniidx=1; else $iniidx=0; if($output[$len-1]==='"') $endidx=-1; else $endidx=$len-1; if($iniidx==1 || $endidx==-1) $output=substr($output,$iniidx,$endidx);
Комментарий помогает с ясностью. скобки в массиве, как использование в строках, возможно и требуют меньше усилий по обработке, чем эквивалентные методы, слишком плохо, что нет переменной длины или последнего индекса char
Я понимаю, что OP не спрашивал о многобайтовых строках, но это не будет работать с такими строками. Не нужно использовать Regex, но они делают это довольно просто.
Как насчет регулярного выражения
//$singleQuotedString="'Hello this 'someword' and \"somewrod\" stas SO"; //$singleQuotedString="Hello this 'someword' and \"somewrod\" stas SO'"; $singleQuotedString="'Hello this 'someword' and \"somewrod\" stas SO'"; $quotesFreeString=preg_replace('/^\'?(.*?(?=\'?$))\'?$/','$1' ,$singleQuotedString);
Hello this 'someword' and "somewrod" stas SO
Вам нужно использовать регулярные выражения, посмотрите: —
Или вы могли бы в этом случае использовать substr, чтобы проверить, является ли первый, а затем последний символ строки меткой кавычки, если она есть, усечь строку.
Trim может в конечном итоге удалить существенные кавычки в начале или конце строки — я поддерживаю регулярные выражения!
Проще говоря: «trim () удалит последовательные кавычки с начала или с конца. Однако мы просто хотим удалить только самые первые и самые последние кавычки.
Ещё вопросы
- 1 Получить объекты и SelectedIndex из ListViewItem
- 0 Как можно эмулировать нажатие клавиатуры или мыши?
- 1 Рабочий каталог при запуске в eclipse, cmd и jar
- 0 PHP заменить все предложение из строки
- 1 SelectionChanged показывает старое значение
- 1 Таймер Java не работает. Вызов нескольких таймеров одновременно
- 0 Выполните поиск, используя фильтр, но игнорируя знаки препинания
- 0 Ошибка «Необходимо указать поле grant_type» при получении токена Oauth2
- 0 Я получаю «Усеченное неверное значение даты и времени:« 0000-00-00 »» даже при выключенном строгом режиме.
- 0 Как получить значение sql AS в Laravel?
- 0 ng-repeat для массива объектов выдает $$ hash
- 1 Проект EAR Maven — JAR не исключается?
- 1 выберите значение индекса из groupby на фрейме данных pandas в python
- 1 Клавиатура Android не отображается при нажатии поля ввода в единстве?
- 0 Magento 1.9 изменить базовый образ с phpMyAdmin
- 1 P2P рукопожатие без центрального сервера
- 0 переменная и ее родительская область видимости внутри нг-если
- 1 Как стилизовать кнопку «Выбрать все» в сетке данных?
- 0 Чтение строки из переменной для SQL-запроса
- 1 Очень простая проблема с массивами, циклами и логическим сравнением
- 0 Маршрутизация пользовательского интерфейса с корневым состоянием не разрешается до дочернего контроллера состояния
- 0 Завершающее регулярное выражение со специфическим символом при первом появлении
- 1 Добавить значения в массив в цикле
- 0 Как мне заполнить мою форму из моих данных, сохраненных в localalstorage
- 1 Как сопоставить элементы JAXB в CIM / RDF?
- 0 Как работать с формами, представленными на одной HTML-странице
- 0 Как вызвать метод, специфичный для подкласса C ++
- 0 yii загружать элементы CRUD в другое место
- 1 Как создать частичные классы из CodeFirst
- 0 Актуальный URL открыть страницу перенаправления в php
- 0 Можно ли найти все посещенные ссылки в браузере?
- 1 Загрузка растрового изображения со слишком большой высотой в Android ImageView
- 1 Фрагменты ConstraintLayout вырезаны в FrameLayout активности
- 1 Как остановить службу переднего плана перед вызовом метода startForeground ()?
- 1 Java jar-файл не может найти .dll с jna.jar
- 0 Ошибка счетчика текстовых символов при загрузке страницы
- 1 Шрифт C3.js tootltip
- 1 Генерация пары ключей RSA на стороне клиента в приложении Google Web Toolkit через Google App Engine с библиотекой gwt-crypto
- 1 Заполнить перфорированную форму в изображении, используя библиотеки Python?
- 0 Сортировать многомерный массив по значениям
- 1 Некоторые поля в документе могут быть пустыми, и если я пытаюсь получить результат, приложение вылетает из-за nullPointerException [duplicate]
- 1 Android: отображение неверной даты окончания (за день до фактической даты) в Календаре Google при добавлении события с намерением
- 1 листы Google горизонтальное выравнивание
- 1 Визуализация времени разработки пользовательских элементов управления в пользовательском Region / RegionManager
- 0 Как я могу читать не символы, такие как арабские слова в PHP
- 1 Android Retrofit2 / RxJava2 / Room — Простая обработка данных
- 0 Я что-то пропустил с этим $ http.jsonp в angularjs?
- 1 Правильное использование IEnumerable
- 0 Добавить класс в привязку для CodeIgniter
- 1 Чистое разделение вида и кода с помощью Vue с использованием шаблонов
stripslashes
stripslashes () можно использовать, если вы не вставляете эти данные в место (например, базу данных), требующее экранирования. Например, если вы просто выводите данные прямо из HTML-формы.
Parameters
Return Values
Возвращает строку с удаленными обратными косыми чертами. ( \’ становится ‘ и т. д.) Двойные обратные косые черты ( \\ ) превращаются в одиночные обратные косые черты ( \ ).
Examples
Пример # 1 stripslashes () Пример
$str = "Is your name O\'reilly?"; // Outputs: Is your name O'reilly? echo stripslashes($str); ?>
Note:
stripslashes () не рекурсивен. Если вы хотите применить эту функцию к многомерному массиву, вам необходимо использовать рекурсивную функцию.
Пример # 2 Использование stripslashes () в массиве
function stripslashes_deep($value) < $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; > // Example $array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")); $array = stripslashes_deep($array); // Output print_r($array); ?>
Выводится приведенный выше пример:
Array ( [0] => f'oo [1] => b'ar [2] => Array ( [0] => fo'o [1] => b'ar ) )
stripslashes
Замечание:
Если включена директива magic_quotes_sybase, вместо обратных слешей будут удаляться двойные одинарные кавычки.
Функцию stripslashes() можно использовать, например, если директива конфигурации magic_quotes_gpc имеет значение on (она была включена по умолчанию в версиях до PHP 5.4), и экранирование символов не требуется. Например, данные не вставляются в базу данных, а просто выводятся в браузер.
Список параметров
Возвращаемые значения
Возвращает строку с вырезанными обратными слешами. (\’ становится ‘ и т.п.) Двойные обратные слеши (\\) становятся одинарными (\).
Примеры
Пример #1 Пример использования stripslashes()
// выводит: Вас зовут O’reilly?
echo stripslashes ( $str );
?>
Замечание:
stripslashes() не рекурсивна. Если вы хотите применить ее к многомерному массиву, то вам необходимо использовать рекурсивную функцию.
Пример #2 Использование stripslashes() с массивом
function stripslashes_deep ( $value )
$value = is_array ( $value ) ?
array_map ( ‘stripslashes_deep’ , $value ) :
stripslashes ( $value );
?php
// Пример
$array = array( «f\\’oo» , «b\\’ar» , array( «fo\\’o» , «b\\’ar» ));
$array = stripslashes_deep ( $array );
Результат выполнения данного примера:
Array ( [0] => f'oo [1] => b'ar [2] => Array ( [0] => fo'o [1] => b'ar ) )
Смотрите также
- addslashes() — Экранирует строку с помощью слешей
- get_magic_quotes_gpc() — Получение текущего значения настройки конфигурации magic_quotes_gpc
PHP: Как удалить эти кавычки « или экранировать?
И какие ещё есть символы такого рода, что удалить не так просто?
Оценить 2 комментария
seredaes:
$name = «Вася«Маша»;
echo htmlentities($name, ENT_DISALLOWED);
https://yadi.sk/i/EkzjCHCJhbn5x
Вывел даже в textarea, никакого результата ваш код не принёс!
seredaes: еще один? Может потому что не нужно смотреть спецсимволы в браузере? И стоит попробовать запустить из консоли, так, для развлечения.
Можете пояснить как оно работает?
Вот пример из интернета:
$str ;
// выводит: A ‘quote’ is bold
echo htmlentities($str);
Я вижу, что угловые скобки заменяет на но в моём случае « никак не заменился. :/
Как я должен был понять, что всё отработало?
Консоль это жёстко. Я ожидал увидеть хотя бы как-то \u.
seredaes: потому что html entities автоматически преобразуются в символы. т.е &_gt; станет > в браузере.
Вам шашечки или ехать? Можно в консоли браузера смотреть что с сервера приходит, там оно чистым будет.