#php #string #character-trimming
#php #строка #обрезка символов
Вопрос:
Я хотел бы удалить завершающую обратную косую черту из строки без использования stripslashes()
или str_replace()
. В идеале я мог бы использовать rtrim()
, но что-то в обратных косых чертах выводит PHP из себя.
$string = "This is my string";
//iv'e tried with no success
$clean_string = rtrim($string, "\");
$clean_string = rtrim($string, "\\");
В идеале строка должна просто читать «Это моя строка» без обратной косой черты в конце. Я не совсем уверен, как правильно ее избежать, любая помощь очень ценится.
Комментарии:
1. Возможно, вы имели в виду
$string = "This is my string\";
. Чтобы определить aв строковом литерале PHP с двойными или одинарными кавычками, вам нужно удвоить его.
2. Спасибо за ваш ответ. Строка не создается с помощью жесткого кода, подобного приведенному выше примеру.. Он принимает CSV, затем разбивает соответствующие строки / столбцы.. Строка здесь представляет значение, которое находится в любой из «ячеек» CSV
3. Оба ваших метода работают нормально. Проблема заключается в обратной косой
$string
черте. Проверьте это
Ответ №1:
Попробуйте это:
if(substr($string, -1) == ""){
echo substr($string, 0, -1);
}
условие if проверяет, имеет ли последний символ косую черту или нет.
Комментарии:
1. Спасибо за быстрый ответ… Проблема в том, что это для сценария импорта, и не каждая строка будет иметь завершающую обратную косую черту… Я не хочу каждый раз удалять последнюю хартию.
2. @NikoJohnson обновил ответ
3. Спасибо за исправление.. Похоже, что это также неправильно экранировано … даже если я использую
4. @NikoJohnson Вы получаете одну обратную косую черту или несколько или не знаете об этом.
5. Упс, случайно слишком быстро нажал enter. В любом случае, я действительно ценю вашу помощь, но обратная косая черта не экранируется должным образом… Вот где я в замешательстве, я не знаю, как заставить php распознавать обратную косую черту .. 🙁
Ответ №2:
Это сработало для меня:
if(substr($string, -1) == '\')
{
$string = substr($string, 0, -1);
}
Ответ №3:
Вы можете попробовать preg_replace:
$string = 'This is my string\';
$clean_string = preg_replace('/(. )(\\)$/', '${1}', $string);
Завершающая косая черта будет удалена, если шаблон будет сопоставлен. В противном случае вы получите ту же строку.