2016-10-17 4 views
-1

stripslashes() 또는 str_replace()을 사용하지 않고 문자열에서 후행 백 슬래시를 제거하고 싶습니다. 이상적으로는 rtrim()을 사용할 수 있지만, PHP가 놀랄만 한 백 슬래시에 관한 것입니다.문자열에서 후행 백 슬래시를 제거하십시오.

$string = "This is my string\"; 

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

문자열은 "This is my string"이라고 읽는 것이 가장 이상적입니다. 끝에는 백 슬래시가 없습니다. 나는 그것을 제대로 벗어날 수있는 방법에 대해 잘 모르겠다. 어떤 도움이라도 대단히 감사한다.

+1

'$ string = "을 (를) 의미했을 수도 있습니다. 이것은 내 문자열 \\"; "입니다. 이중 또는 작은 따옴표 PHP 문자열 리터럴에''\''을 정의하려면 PHP 문자열 리터럴을 두 번 사용해야합니다. –

+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); 

후행 슬래시가 제거 얻을 것이다. 그렇지 않으면 같은 문자열을 얻게됩니다.

관련 문제