Sonny
Sonny

Reputation: 25

How to make one word out of 2 in uppercase in a string in PHP?

I'm doing some exercises and I'm blocked.. I have a given $string and I would like this string to have one word out of 2 in uppercase. But also, one letter out of 2 being in uppercase in an other exercise.. I tried this code :

$string = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce venenatis velit non nibh. Nullam feugiat vehicula eros. Nullam mi arcu, porta at, fermentum non, laoreet eget, sem. Nunc quam nunc, lacinia id, sagittis non, condimentum eget, augue. Nunc ultrices malesuada diam. Cras bibendum. Fusce lobortis pellentesque purus. Etiam ac purus et diam condimentum venenatis. Vestibulum imperdiet mattis dolor. Etiam sit amet nisi sed orci elementum tincidunt. Etiam aliquam neque non nibh. Mauris pede orci, fringilla sed, bibendum vitae, semper a, quam.";

$stringArray = explode(' ', $string);
$stringnew = [];
$wordup = [];
for($word = 0 ; $word < count($stringArray) ; $word++){
    // echo $stringArray[$word]. '<br>';
    // $stringnew += $stringArray;
    // var_dump($stringnew);
    if($word % 2 == 0) {
        $motup += strtoupper($stringArray[$word]);
        var_dump($wordup);
    }
}    

I also did other things before but I'm getting lost, thank you for replies in advance..

Expecting result :

$string = "LOREM ipsum DOLOR sit AMET, conesctetuer ADIPISCING .... "

Second result :

$string = "LoReM iPsUm DoLoR..."

Upvotes: 1

Views: 53

Answers (1)

Davit Zeynalyan
Davit Zeynalyan

Reputation: 8618

For First case use

$string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit';
$array = explode(' ', $string);

foreach ($array as $number => &$word) {
    if (0 == $number % 2 ) {
        $word = strtoupper($word);
    } else {
        $word = strtolower($word);
    }
}

$string = implode(' ', $array);
echo $string;
// result is LOREM ipsum DOLOR sit AMET, consectetuer ADIPISCING elit 

For second case

$string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit';
$isUpper = true;

for ($i = 0; $i < strlen($string); $i++) {
    $letter = substr($string, $i, 1);
    if (' ' == $letter) {
        continue;
    }
    if ($isUpper) {
        $string = substr_replace($string, ucfirst($letter), $i, 1);
    } else {
        $string = substr_replace($string, lcfirst($letter), $i, 1);
    }

    $isUpper = !$isUpper;
}
echo $string 
// result is "LoReM iPsUm DoLoR sIt AmEt, cOnSeCtEtUeR aDiPiScInG eLiT"

Upvotes: 1

Related Questions