Search and replace multiple values with multiple/different values in PHP5?

后端 未结 5 2224
日久生厌
日久生厌 2020-11-30 03:35

Is there an inbuilt PHP function to replace multiple values inside a string with an array that dictates exactly what is replaced with what?

For example:



        
相关标签:
5条回答
  • 2020-11-30 03:38
    $string = 'blah blarh bleh bleh blarh';
    $trans = array("blah" => "blerh", "bleh" => "blerh");
    $result = strtr($string,$trans);
    

    You can check the manual for detailed explanation.

    0 讨论(0)
  • 2020-11-30 03:42

    You are looking for str_replace().

    $string = 'blah blarh bleh bleh blarh';
    $result = str_replace(
      array('blah', 'blarh'), 
      array('bleh', 'blerh'), 
      $string
    );
    

    // Additional tip:

    And if you are stuck with an associative array like in your example, you can split it up like that:

    $searchReplaceArray = array(
      'blah' => 'bleh', 
      'blarh' => 'blerh'
    );
    $result = str_replace(
      array_keys($searchReplaceArray), 
      array_values($searchReplaceArray), 
      $string
    ); 
    
    0 讨论(0)
  • 2020-11-30 03:43

    For what you've got there, just pass that array into str_replace as both the search and replace (using array_keys on the search parameter if you want to keep the array as-is).

    0 讨论(0)
  • 2020-11-30 03:46

    str_replace() does that.

    You can check the manual for more detailed explanation.

    0 讨论(0)
  • 2020-11-30 04:00

    IN CASE some one is looking for replacing same strings with different values ( per occurence ).. Example, to replace all ## by numbers++ OR values from an array-

    $split_at = '##';
    $string = "AA ##  BB ##  CC ##  DD";
    $new_string = '';
    // echo $string;
    $replace_num = 1;
    $replace_arr = ['first' , 'second' , 'third'];
    $split_at_cnt = substr_count($string, $split_at);
    for ($split=0; $split <= $split_at_cnt; $split++)
    {
        $new_string .= str_replace('##', ($replace_num++)." : ".$replace_arr[$split], substr( $string, 0, strpos($string, $split_at)+strlen($split_at)));
        $string = substr($string, strpos($string, $split_at)+strlen($split_at));
    }
    
    echo $new_string;
    
    0 讨论(0)
提交回复
热议问题