Multiple Methods and Best Practices for Getting the Last Character of a String in PHP

Nov 10, 2025 · Programming · 13 views · 7.8

Keywords: PHP string manipulation | substr function | mb_substr function | character encoding | multi-byte characters

Abstract: This article provides a comprehensive exploration of various technical approaches to retrieve the last character of a string in PHP, with detailed analysis of the substr and mb_substr functions, their parameter characteristics, and performance considerations. Through comparative analysis of single-byte and multi-byte string processing differences, combined with practical code examples, it offers in-depth insights into key technical aspects including negative offsets, string length calculation, and character encoding compatibility.

Core Methods and Principle Analysis

In PHP development, retrieving the last character of a string is a common operation that requires careful consideration. Different technical approaches are needed based on the string encoding type to ensure accurate results.

Basic Method: substr Function

PHP's built-in substr function is the most commonly used string extraction tool, with the syntax substr(string $string, int $offset, ?int $length = null). When using negative offsets, the function calculates positions from the end of the string.

<?php
// Basic usage example
$input = "testers";
$lastChar = substr($input, -1);
echo $lastChar; // Outputs "s"
?>

The advantage of this approach lies in its concise code and high execution efficiency. A negative offset of -1 indicates starting extraction from the first character at the end of the string, -2 from the second last character, and so on. It's important to note that prior to PHP 8.0, when the extraction range exceeded string boundaries, the function returned false, while in PHP 8.0 and later versions, it returns an empty string.

Multi-byte String Processing

For strings containing multi-byte characters (such as Chinese, Japanese in UTF-8 encoding, etc.), using the standard substr function may cause character truncation issues. In such cases, the mb_substr function should be used, as it is specifically designed for handling multi-byte characters.

<?php
// Multi-byte string processing example
$multibyteString = "multibyte string…";
$lastChar = mb_substr($multibyteString, -1, 1, "UTF-8");
echo $lastChar; // Correctly outputs "…"
?>

The fourth parameter of the mb_substr function specifies the character encoding, with common encodings including UTF-8, GB2312, BIG5, etc. If the encoding is not specified, the function uses the internal character encoding, which may lead to unexpected results.

Alternative Approaches Comparison

In addition to the two main methods mentioned above, there are other technical approaches for retrieving the last character of a string:

Array Access Method

<?php
$string = "abcdef";
$lastChar = $string[strlen($string) - 1];
echo $lastChar; // Outputs "f"
?>

This method calculates the string length and then subtracts one to obtain the index position of the last character. While logically clear, it requires an additional function call (strlen), making it slightly less performant than directly using negative offsets with the substr method.

Performance Comparison Analysis

Benchmark tests reveal that using substr($string, -1) offers the best performance, as it requires only one function call and has efficient internal implementation. The array access method, on the other hand, needs to call strlen to calculate the length before performing array index access, adding extra overhead.

Technical Details and Edge Cases

Empty String Handling

Different methods produce different results when handling empty strings:

<?php
$emptyString = "";

// substr handling empty string
var_dump(substr($emptyString, -1)); // PHP 8.0+ outputs string(0) ""

// Array access method
var_dump($emptyString[strlen($emptyString) - 1]); // Generates warning and returns null
?>

Encoding Compatibility Considerations

When processing user input or external data, the uncertainty of character encoding is an important consideration. It is recommended to perform encoding detection or convert to a specific encoding before processing when the string encoding is uncertain.

<?php
function getLastCharSafe($string, $encoding = "UTF-8") {
    if (function_exists('mb_substr')) {
        return mb_substr($string, -1, 1, $encoding);
    } else {
        return substr($string, -1);
    }
}
?>

Best Practice Recommendations

Based on the above analysis, we recommend the following best practices:

  1. Single-byte strings: Prefer using substr($string, -1) for concise code and optimal performance
  2. Multi-byte strings: Must use mb_substr($string, -1, 1, "UTF-8") to ensure character integrity
  3. General scenarios: When uncertain about string encoding, recommend using mb_substr with explicit encoding parameters
  4. Error handling: Add appropriate boundary checks when dealing with potentially empty strings

By properly selecting technical approaches and paying attention to edge case handling, you can ensure that string operations yield correct and reliable results across various scenarios.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.