удалить завершающую обратную косую черту из строки

#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 черте. Проверьте это

4.php.net/manual/en/function.stripslashes.php ???

Ответ №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);
  

Завершающая косая черта будет удалена, если шаблон будет сопоставлен. В противном случае вы получите ту же строку.