phparrayspreg-replacepreg-matchsubstr

Adding dollar sign before each string in array?


I have this string: $str = "(he+is+genius*2)/clever"; which looks like this in array;

Array ( 
  [0] => ( 
  [1] => he 
  [2] => + 
  [3] => is 
  [4] => + 
  [5] => genius 
  [6] => ) 
  [7] => * 
  [8] => and 
  [9] => / 
  [10] => clever ) 

What I want to do is placing dollar sign $ before each string present in $str but ignoring non-alphanumeric and numbers. At the end i want to have something which looks like this;

$newstr = "($he+$is+$genius*2)/$clever";

Solution

  • For each value, check if the first char (or the whole value) is made of characters with ctype_alpha, then prepend with $ :

    // $arr is your array as defined in your question
    foreach ($arr as &$val) {
     //OR if (ctype_alpha($val[0])) { 
     if (ctype_alpha($val)) { // if you have other qualifying conditions add them here
       $val = '$' . $val;
     }
    }
    
    var_dump($arr);
    

    Output :

    array(6) {
      [0]=>
      string(3) "$he"
      [1]=>
      string(1) "+"
      [2]=>
      string(3) "$is"
      [3]=>
      string(1) "+"
      [4]=>
      string(7) "$genius"
      ...
    }
    

    Second solution, checking if it has a char at any position :

    foreach ($arr as &$val) {
      $tmp = str_split($val); 
      foreach ($tmp as $char) {
        if (ctype_alpha($char)) {
          $val = '$' . $val;
          break;
        }
      } 
    }