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";
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;
}
}
}