Функция PHP для строчной буквы каждого символа в строке, кроме последнего

Я пытаюсь ввести в нижний регистр каждый символ в строке, кроме последнего, который должен быть в верхнем регистре.

Вот мой код:

function caps_caps($var) {
    $var = strrev(ucwords(strrev($var)));
    echo $var;
}

caps_caps("HeLlo WOrld"); // should returns "hellO worlD"

Вы имеете в виду, что последний символ каждого слово должен быть в верхнем регистре? Ваше описание и ваш пример не совпадают.

iainn 25.04.2018 12:30

У вас есть вопрос?

rsm 25.04.2018 12:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
170
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

function caps_caps($text) {
    $value_to_print = '';
    $text = strrev(ucwords(strrev($text)));
    $words = explode(' ', $text);
    foreach($words as $word){
        $word = strtolower($word);
        $word[strlen($word)-1] = strtoupper($word[strlen($word)-1]);
        $value_to_print .= $word . ' ';
    }
    echo trim($value_to_print);
}

caps_caps("HeLlo WOrld");
Ответ принят как подходящий

Вам также необходимо сначала преобразовать строку в нижний регистр.

function caps_caps($var) {
    $var = strrev(ucwords(strrev(strtolower($var))));
    echo $var;
}

caps_caps("HeLlo WOrld"); // returns "hellO worlD"

Это простое решение этой проблемы

function caps_caps($var) {
    $var = strrev(ucwords(strrev(strtolower($var))));
    echo $var;
}
caps_caps("HeLlo WOrld");

Демо

Попробуйте это, вы забыли сделать foreach, каждый элемент.

function uclast_words($text, $delimiter = " "){

    foreach(explode($delimiter, $text) as $value){
        $temp[] = strrev(ucfirst(strrev(strtolower($value))));
    }

    return implode($delimiter, $temp);
}

print_r(uclast_words("hello world", " "));

Надеюсь, это ответ на ваш вопрос.

You can try this piece of code.
function uclast($s)
{
  $lastCharacterUppar = '';
  if ( preg_match('/\s/',$s) ){//If string has space
      $explode = explode(' ',$s);
      for($i=0;$i<count($explode);$i++){
        $l=strlen($explode[$i])-1;
        $explode[$i] = strtolower($explode[$i]);
        $explode[$i][$l] = strtoupper($explode[$i][$l]);    
      }
      $lastCharacterUppar = implode(' ', $explode);
  } else { //if string without space
    $l=strlen($s)-1;
    $s = strtolower($s);
    $s[$l] = strtoupper($s[$l]);
    $lastCharacterUppar = $s;    
  }
  return $lastCharacterUppar;
}

$str = 'hey you yo';
echo uclast($str);

Другие вопросы по теме