代码之家  ›  专栏  ›  技术社区  ›  Nathan Long

PHP等价于Javascript的substring()?

php
  •  4
  • Nathan Long  · 技术社区  · 15 年前

    substring(from,to) substr(start,length)

    这意味着我可以决定“当我从位置X开始得到子字符串时,我是想指定字符串的结束位置还是子字符串的长度?”

    (一个很好的用法 from, to 要使用的版本 search() 以确定两个位置。)

    substr() 用于指定子字符串的长度。是否有一个内置的字符串函数可以让您指定要结束的字符位置?

    4 回复  |  直到 15 年前
        1
  •  13
  •   Nick Shepherd    15 年前

    我认为这个问题更多的是关于逻辑。你可以用 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);
    
        2
  •  4
  •   2ndkauboy    15 年前

    作为Nick答案的补充,您可以自己编写子字符串函数:

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

    我还有一个PHP文件,其中包含一些类似JavaScript的函数,比如strtruncate()函数,并将它们包含到我需要它们的PHP脚本中。

        3
  •  2
  •   Túbal Martín    14 年前

    /**
     * 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;
    }
    
        4
  •  0
  •   HerbN    15 年前

    substr(string, start, length) 是函数的标准用法 link

    推荐文章