PHP文字列の最後の7文字を取得するにはどうすればよいですか?


278

以下の文字列の最後の7文字を取得するにはどうすればよいですか?

例えば:

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

どちらが表示されます:

The new string is: 5409els


8
DUPとして特定の質問は本当にすべてでこの質問と同じではありません。
Asaph 2012年

13
皮肉なことに、このトピックをGoogleで検索しているときにここに連れて行かれました。ため息
LeonardChallis 2013

5
@Asaphこれをスタックの影響と呼びます。人々は何でも質問を締めくくろうとします。彼らが最初に行うことは、単にフラグを立てるために、dupとしてフラグを立てることです
twigg

5
マニュアルを読むよりも、問題をグーグルしてSOの回答でコード行を見つける方がはるかに簡単で高速です。
Engin Yapici 2015

回答:


597

substr()2番目の引数には負の数を使用します。

$newstring = substr($dynamicstring, -7);

php docsから:

string substr ( string $string , int $start [, int $length ] )

startが負の場合、返される文字列は文字列の末尾から最初の文字から始まります。


ただし、$ dynamicstringが7文字未満の場合、$ newstringは空になります。(少なくともPHP 5.2.6)
Scott Chu

あなたは、常に文字の数が7以上であるかどうかを確認するために最初にstrlenを持つのチェックを行うことができます
PBwebD


14

マルチバイト文字コードを処理するためのより安全な結果。substrではなく、常にmb_substrを使用してください。utf-8の例:

$str = 'Ne zaman seni düşünsem';
echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
  mb_substr( $str, -7, null, 'UTF-8') ;

11

文字列を取得する前にチェックすることをお勧めします。

$newstring = substr($dynamicstring, -7);

文字が大きい場合、7は最後の7文字を返し、それ以外の場合は指定された文字列を返します。

または、長さが7未満の場合にメッセージまたはエラーを返す必要がある場合は、これを行います。

$newstring = (strlen($dynamicstring)>7)?substr($dynamicstring, -7):"message";

substrドキュメント


メッセージを返すには、elseの部分が必要だと思います。入力された無効なデータのようなものまたは..
Neri

1
これがおそらく最良の答えです。それを改善する可能性があるのは、phpマニュアルへの参照だけです。
Mark Carpenter Jr

2

簡単にするために、メッセージを送信したくない場合は、これを試してください

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );

0

最後の7文字

$newstring = substr($dynamicstring, -7);

$ newstring:5409els

最初の7文字

$newstring = substr($dynamicstring, 0, 7);

$ newstring:2490slk


-1

文字列の最後の7文字:

$ rest = substr( "abcdefghijklmnop"、-7); // "jklmnop"を返します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.