zoukankan      html  css  js  c++  java
  • PHP之string之explode()函数使用

    explode

    • (PHP 4, PHP 5, PHP 7)
    • explode — Split a string by string
    • explode — 使用一个字符串分割另一个字符串

    Description

    array explode ( 
        string $delimiter , 
        string $string [, 
        int $limit = PHP_INT_MAX ] 
        )
    //Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the string delimiter.
    //此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。
    

    Parameters

    delimiter

    • The boundary string.
    • 边界上的分隔字符。

    string

    • The input string.
    • 输入的字符串。

    limit

    • If limit is set and positive, the returned array will contain a maximum of limit elements with the last element containing the rest of string.

    • 如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。

    • If the limit parameter is negative, all components except the last -limit are returned.

    • 如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。

    • If the limit parameter is zero, then this is treated as 1.

    • 如果 limit 是 0,则会被当做 1。

    Note:

    • Although implode() can, for historical reasons, accept its parameters in either order, explode() cannot. You must ensure that the delimiter argument comes before the string argument.
    • 由于历史原因,虽然 implode() 可以接收两种参数顺序,但是 explode() 不行。你必须保证 separator 参数在 string 参数之前才行。

    Return Values

    • Returns an array of strings created by splitting the string parameter on boundaries formed by the delimiter.

    • 此函数返回由字符串组成的 array,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

    • If delimiter is an empty string (""), explode() will return FALSE. If delimiter contains a value that is not contained in string and a negative limit is used, then an empty array will be returned, otherwise an array containing string will be returned.

    • 如果 delimiter 为空字符串(""),explode() 将返回 FALSE。 如果 delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit , 那么会返回空的 array, 否则返回包含 string 单个元素的数组。

    Example

    <?php
    /**
     * Created by PhpStorm.
     * User: zhangrongxiang
     * Date: 2018/2/16
     * Time: 下午3:49
     */
    // 示例 1
    $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
    $pieces = explode( " ", $pizza );
    echo $pieces[0] . PHP_EOL; // piece1
    echo $pieces[1] . PHP_EOL; // piece2
    
    // 示例 2
    $data = "foo:*:1023:1000::/home/foo:/bin/sh";
    list( $user, $pass, $uid, $gid, $gecos, $home, $shell ) = explode( ":", $data );
    echo $user . PHP_EOL; // foo
    echo $pass . PHP_EOL; // *
    print_r( explode( ';', $data ) );//    [0] => foo:*:1023:1000::/home/foo:/bin/sh
    
    $str = 'one|two|three|four';
    // 正数的 limit
    //[0] => one
    //[1] => two|three|four
    print_r( explode( '|', $str, 2 ) );
    // 负数的 limit(自 PHP 5.1 起)
    //[0] => one
    //[1] => two
    //[2] => three
    //如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。
    print_r( explode( '|', $str, - 1 ) );
    
    $path = '/Users/zhangrongxiang/WorkSpace/phpProjects/PHPTEST';
    //[0] =>
    //[1] => Users
    //[2] => zhangrongxiang
    //[3] => WorkSpace
    //[4] => phpProjects
    //[5] => PHPTEST
    $rs = explode( '/', $path );
    print_r( $rs );
    
    //[0] =>
    //[1] => Users
    //[2] => zhangrongxiang/WorkSpace/phpProjects/PHPTEST
    $rs = explode( '/', $path, 3 );
    print_r( $rs );
    
    //[0] =>
    //[1] => Users
    //[2] => zhangrongxiang
    $rs = explode( '/', $path, - 3 );
    print_r( $rs );
    
    /////////////////////////////////////////////////////////////////////////////////////
    function multiexplode( $delimiters, $string ) {
    	$ready = str_replace( $delimiters, $delimiters[0], $string );
    	//here is a sample, this text, and this will be exploded, this also , this one too ,)
    	echo $ready . PHP_EOL;
    	$launch = explode( $delimiters[0], $ready );
    	
    	return $launch;
    }
    
    //[0] => here is a sample
    //[1] =>  this text
    //[2] =>  and this will be exploded
    //[3] =>  this also
    //[4] =>  this one too
    //[5] => )
    $text     = "here is a sample: this text, and this will be exploded. this also | this one too :)";
    $exploded = multiexplode( array( ",", ".", "|", ":" ), $text );
    print_r( $exploded );
    
    
    /////////////////////////////////////////////////////////////////////////////////////
    $str = "";
    $res = explode( ",", $str );
    //Array
    //(
    //	[0] =>
    //)
    print_r( $res );
    $res = array_filter( explode( ",", $str ) );
    //Array
    //(
    //)
    print_r( $res );
    
    /////////////////////////////////////////////////////////////////////////////////////
    //a simple one line method to explode & trim whitespaces from the exploded elements
    array_map( 'trim', explode( ",", $str ) );
    $str = "one  ,two  ,       three  ,  four    ";
    //[0] => one
    //[1] => two
    //[2] => three
    //[3] => four
    print_r( array_map( 'trim', explode( ",", $str ) ) );
    
    /////////////////////////////////////////////////////////////////////////////////////
    //the function
    //Param 1 has to be an Array
    //Param 2 has to be a String
    function multiexplode2( $delimiters, $string ) {
    	$ary = explode( $delimiters[0], $string );
    	array_shift( $delimiters );
    	if ( $delimiters != null ) {
    		foreach ( $ary as $key => $val ) {
    			$ary[ $key ] = multiexplode2( $delimiters, $val );
    		}
    	}
    	
    	return $ary;
    }
    
    // Example of use
    $string     = "1-2-3|4-5|6:7-8-9-0|1,2:3-4|5";
    $delimiters = Array( ",", ":", "|", "-" );
    
    $res = multiexplode2( $delimiters, $string );
    print_r( $res );
    
    

    See

    All rights reserved

  • 相关阅读:
    173. Binary Search Tree Iterator
    199. Binary Tree Right Side View
    230. Kth Smallest Element in a BST
    236. Lowest Common Ancestor of a Binary Tree
    337. House Robber III
    449. Serialize and Deserialize BST
    508. Most Frequent Subtree Sum
    513. Find Bottom Left Tree Value
    129. Sum Root to Leaf Numbers
    652. Find Duplicate Subtrees
  • 原文地址:https://www.cnblogs.com/zhangrxiang/p/8502715.html
Copyright © 2011-2022 走看看