354

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

例えば:

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

どちらが表示されますか:

The new string is: 5409els
4

8 に答える 8

730

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

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

phpドキュメントから:

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

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

于 2012-05-10T21:21:21.737 に答える
80

ええと..そのような?

$newstring = substr($dynamicstring, -7);
于 2012-05-10T21:20:56.460 に答える
17

文字列を取得する前にチェックしたほうがよいでしょう。

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

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

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

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

substr ドキュメント

于 2016-05-13T18:45:19.323 に答える
0

ここには複数の正解があります。しかし、「安全な」バージョンのsubstr.

文字列が「十分に長い」場合は と同じsubstrですが、文字列が短すぎる場合は ( を返す代わりに) 元の文字列を返しfalseます。

/** Unlike substr, handles case where $string is too short.
 * @param $string
 * @param $nChars - negative to return at end of string.
 */
function safe_substr($string, $nChars) {
    if ($nChars == 0 || !isset($string))
        return "";

    if (strlen($string) <= abs($nChars))
        // $string is too short (or exactly the desired length). Return the string.
        return $string;

    return substr($string, $nChars);
}

注: UTF-8 文字の場合は、 を定義し、上記をsafe_mb_substrに置き換えます。と置き換えます。substrmb_substrstrlenmb_strlen

于 2021-07-14T17:26:12.727 に答える