开发者

PHP equivalent of JavaScript's substring()

开发者 https://www.devze.com 2023-01-13 01:38 出处:网络
JavaScript has two handy substring functions: substring(from,to) and substr(start,length). This means I can decide "when I get my substring starting from position X, do I want to specify what str

JavaScript has two handy substring functions: substring(from,to) and substr(start,length).

This means I can decide "when I get my substring starting from position X, do I want to specify what string position to end on or how many characters long the substring is?"

(One nice usag开发者_JAVA技巧e of the from, to version is to use search() to determine both positions.)

PHP's substr() lets you specify the length of the substring. Is there a built-in string function to let you specify the character position to end on?


I think this question is more about logic. You can accomplish both with the substr() function.

For instance. for the First substring(from, to):

$string = 'Foo Bar!';
$from   = 2;
$to     = 5;
$final_string = substr($string, $from, $to - $from);

And the second substr(start,length):

$string = 'Foo Bar!';
$start  = 2;
$length = 5;
$final_string = substr($string, $start, $length);


As an addition to Nick's answer, you can always write the substring function yourself:

function substring($string, $from, $to){
    return substr($string, $from, $to - $from);
}

I also have a PHP file with some JavaScript like function as the strtruncate() function and include them to the PHP script I need them for.


Just in case you need a PHP port of JavaScript's "substring" method here's a reliable port I had to write time ago:

/**
 * PHP port of JavaScript's "substring" function
 * Author: Tubal Martin http://blog.margenn.com
 * Tests: http://margenn.com/tubal/substring/
 *
 * @param string $str
 * @param int    $from index
 * @param int    $to index (optional)
 */
private function substring($str, $from = 0, $to = FALSE)
{
    if ($to !== FALSE) {
        if ($from == $to || ($from <= 0 && $to < 0)) {
            return '';
        }

        if ($from > $to) {
            $from_copy = $from;
            $from = $to;
            $to = $from_copy;
        }
    }

    if ($from < 0) {
        $from = 0;
    }

    $substring = $to === FALSE ? substr($str, $from) : substr($str, $from, $to - $from);
    return ($substring === FALSE) ? '' : $substring;
}


substr(string, start, length) is a standard usage of the function link

0

精彩评论

暂无评论...
验证码 换一张
取 消