2016-08-22 19 views
-2

文字列の最後から "s"を削除しますが、それをPHPで動作させることはできません。アポストロフィを文字列の末尾から削除するには

私はSO上でこれを見つけた:

endsWith($word,"'s"); 

残念ながら、それはのような年代で終わる言葉、動作しません。このよう

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

私は、それを呼び出してみました

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

ご迷惑をおかけして申し訳ありません。正規表現もオプションですが、私は厄介ではありません!

EDIT: "ママさん" から「余分な削除(!申し訳ありません)

+1

str_replaceは本当に、 –

+0

Downvotesを助ける必要がありますか?私には公正な質問のようです。 :) –

+0

アポストロフィがコード化されていることが分かりました。私はこれを使ってChrisに感謝し、問題は解決されました:$ word = rtrim($ word、 "' s"); –

答えて

3

rtrim機能があなたのために働く必要があります。

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

デモ:https://eval.in/627045

+0

Chrisさん、デモは完璧に動作しますが、私のコードでは文字列の最後に正しく検出されたようですが、何らかの理由でrtrimは "s"だけを削除します。たとえば、「お父さん」は「お父さん」になります。今までこれを見たことがありますか? –

+0

実際の見積もりですか、それはエンティティ '''でしょうか?動作はPHPバージョン間で一貫しているようです。 https://3v4l.org/1DcbY – chris85

+0

それはまさにそれでした! Chrisに感謝します。 –

2

するTryにpreg_replace:

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

これはmom'sのような'sで終わる文字列のみを排除します。最後には何もない、何もない。

それらのすべてを置き換えるために、試してみてください。

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

二重引用符で囲んだ場合は一重引用符をエスケープする必要はありません。 – chris85

+0

Cプログラミングの習慣 – Brendan

関連する問題