PHP相当于Javascript substring()?

时间:2010-08-26 21:02:16

标签: php

Javascript有两个方便的子字符串函数:substring(from,to)substr(start,length)

这意味着我可以决定“当我从位置X开始获取子字符串时,是否要指定要结束的字符串位置或子字符串长的字符数?”

from, to版本的一个不错用法是使用search()来确定两个位置。)

PHP的substr()允许您指定子字符串的长度。是否有内置的字符串函数,让您指定要结束的字符位置?

4 个答案:

答案 0 :(得分:12)

我认为这个问题更多的是关于逻辑。您可以使用substr()函数完成这两项工作。

例如。对于第一个substring(from, to)

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

第二个substr(start,length)

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

答案 1 :(得分:4)

作为Nick的回答的补充,你总是可以自己编写子串函数:

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

我还有一个带有一些类似JavaScript函数的PHP文件作为strtruncate()函数,并将它们包含在我需要的PHP脚本中。

答案 2 :(得分:2)

万一你需要一个Javascript的“子串”方法的PHP端口,这是我不得不写的一个可靠的端口:

/**
 * 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;
}

答案 3 :(得分:0)

substr(string, start, length)是函数link

的标准用法