2016-10-17 8 views
-1

Я хотел бы удалить обратную косую черту из строки без использования stripslashes() или str_replace(). В идеале я мог бы использовать rtrim(), но это что-то вроде обратных косых черт, из-за чего ФРС избавляется.удалить хвостовую обратную косую черту из строки

$string = "This is my string\"; 

//iv'e tried with no success 
$clean_string = rtrim($string, "\\"); 
$clean_string = rtrim($string, "\\\\"); 

В идеале строка будет просто читать «Это моя строка» без обратной косой черты в конце. Я не совсем уверен, как избежать этого, любая помощь очень ценится.

+1

Возможно, вы имели в виду '$ string =" Это моя строка \\ ";'. Чтобы определить '' '' 'в строчном литерале с двойной или одиночной кавычкой, вам нужно удвоить его. –

+0

Спасибо за ваш ответ. Строка не создается с помощью жесткого кода, как в примере выше. Он принимает CSV, затем разбивает соответствующие строки/столбцы. Строка здесь представляет значение, которое находится в любой из «ячеек» CSV –

+0

Оба ваших метода работают нормально. Проблема заключается в обратном следе в '$ string'. [Проверить это] (http://sandbox.onlinephpfunctions.com/code/4f269e1b87d35d3001348e21fdaf0adfd892c7e2) –

ответ

1

Попробуйте это:

if(substr($string, -1) == "\"){ 
    echo substr($string, 0, -1); 
} 

если условие проверяет, имеет ли последний символ слэш или нет.

+0

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

+0

@NikoJohnson Обновлен ответ –

+0

Спасибо за исправление .. Похоже, что также не удалось избежать правильного пути ... даже если я использую –

0

Вы можете попробовать preg_replace:

$string = 'This is my string\\'; 
$clean_string = preg_replace('/(.+)(\\\\)$/', '${1}', $string); 

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