MR.Internet
MR.Internet

Reputation: 645

php string manipulation issues

I have the following string...

$string = "True is True (5-7 years)";

what I want is to get - TiT(5-7 years)

I have tried the following code but no luck...

$string = "True is True (5-7 years)"; 
$explodedString = explode(" ",$string); 
for($i = 0; $i < 4; $i++){ 
    $tempString = substr($explodedString[$i], 0, 1); 
    $finalString .= $tempString; 
}  

In short, I need the first three words of its initials and the remaining in bracket is as it is like this.... TiT(5-7 years). how?

Upvotes: 0

Views: 71

Answers (4)

user10756807
user10756807

Reputation:

First of all. Create an empty variable. That will be your final result

$result="";

Then youse foreach to loop your explode string. At every part chech the first character. If it's not ( add the first char onto the result variable. else add the whole array element onto the result variable

foreach(explodedString as $t){
If($t[0] !="("){$result.=$t[0];} else{$result.=$t;}
}

At the end of the loop you will get what you wanted

echo $result;

Upvotes: 0

Djanym
Djanym

Reputation: 342

$string = "True is True (5-7 years)"; 
$new_string = preg_replace('/^([a-z])[a-z]+ ([a-z])[a-z]+ ([a-z])[a-z]+ (\(.+\))$/i', '$1$2$3$4', $string); 

Upvotes: 1

revo
revo

Reputation: 48751

This a good case for using regular expressions:

$str = 'True is True (5-7 years)';
preg_match_all('~\([^()]*\)|\b\w~', $str, $matches);
echo implode("", $matches[0]); // TiT(5-7 years)

Regex breakdown:

  • \([^()]*\) Match anything inside parentheses including themselves
  • | Or
  • \b\w Match first word character from a word

Upvotes: 2

Barmar
Barmar

Reputation: 781716

Your loop is going one element too far. If you want the first letter of the first 3 words, it should be $i < 3.

Then you should use array_slice() and implode() to concatenate the rest of the array.

for ($i = 0; $i < 3; $i++) {
    $finalString .= $explodedString[$i][0];
}
$finalString .= implode(' ', array_slice($explodedString, 3));

DEMO

Upvotes: 1

Related Questions