2016-08-22 3 views
-2

문자열 끝에 "s"을 제거하고 싶지만 PHP에서 작동하지 않습니다. 어포 스트로피 s ('s)를 문자열 끝에서 제거하는 방법

나는 SO에 발견 :이처럼 그것을 호출 시도

function endsWith($haystack, $needle) { 
// search forward starting from end minus needle length characters 
    return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== false); 
} 

:

:

endsWith($word,"'s"); 

불행히도이 같은 '과의 최종 단어, 작동하지 않습니다

$word = "mom's"; 
$word = "dad's"; 

의견을 보내 주시면 감사하겠습니다. 정규 표현식도 옵션입니다, 나는 까다 롭지 않다!

편집 :에서 '추가 제거 "엄마"

+1

않는 str_replace 정말 –

+0

Downvotes을 도움이 될 것입니다? 나에게 공정한 질문처럼 보였다. :) –

+0

아포스트로피가 인코딩 된 것으로 밝혀 졌기 때문에 Chris 덕분에이 문제가 해결되어 문제가 해결되었습니다. $ word = rtrim ($ word, "' s"); –

답변

3

rtrim 기능은 당신을 위해 작동합니다 (죄송!).

echo rtrim($word,"'s"); 

데모 : https://eval.in/627045

+0

크리스, 데모 완벽하게 작동하지만 내 코드에서 올바르게 문자열의 끝에서 감지 할 수 있지만 rtrim "s"제거합니다. 예를 들어, "아빠"는 "아빠"가됩니다. 전에 이것을 본적이 있습니까? –

+0

진짜 견적인가요? 아마도 엔티티 '''입니까? 동작은 PHP 버전간에 일관된 것으로 보입니다. https://3v4l.org/1DcbY – chris85

+0

정확히 그랬습니다! Chris에게 감사드립니다. –

2

해보십시오 preg_replace이다 :

preg_replace("/\'s$/", "", $word); 

이 단지 문자열 mom's처럼 's로 끝나는 제거됩니다. 결국 아무 기간도, 그 밖의 것은 없습니다.

그들 모두를 교체하려면, 시도 :

preg_replace("/\'s/", "", $word); 
+0

큰 따옴표 안에 작은 따옴표를 이스케이프 할 필요가 없습니다. – chris85

+0

C 프로그래밍 습관 – Brendan

관련 문제