Подтвердить что ты не робот

Как заглавная первая буква после дефиса, то есть Адам Смит-Джонс

Я ищу способ прописать верхние буквы первой строки строки, включая имена, которые связаны дефисом, например, adam smith-jones должен быть Adam Smith-Jones.

ucwords() (или ucfirst(), если я разделил их на имя, фамилию), только Adam Smith-jones

4b9b3361

Ответ 1

$string = implode('-', array_map('ucfirst', explode('-', $string)));

Ответ 2

Что вы думаете о следующем коде?

mb_convert_case(mb_strtolower($value), MB_CASE_TITLE, "UTF-8");

Обратите внимание, что это также обрабатывает символы с акцентом (полезно для некоторых языков, таких как французский).

Ответ 3

Это нормально?

    function to_upper($name)
    {
        $name=ucwords($name);
        $arr=explode('-', $name);
        $name=array();
        foreach($arr as $v)
        {
            $name[]=ucfirst($v);
        }
        $name=implode('-', $name);
        return $name;
    }
    echo to_upper("adam smith-jones");

Ответ 4

Другой способ:

<?php

$str = 'adam smith-jones';

echo preg_replace("/(-)([a-z])/e","'\\1'.strtoupper('\\2')", ucwords($str));

?>

Ответ 5

/**
* Uppercase words including after a hyphen
*
* @param string $text lower-case text
* @return string Upper-Case text
*/
function uc_hyphenated_words($text)
{
    return str_replace("- ","-",ucwords(str_replace("-","- ",$text)));
}

Ответ 6

<?php
     // note - this does NOT do what you want - but I think does what you said
     // perhaps you can modify it to do what you want - or we can help if you can
     // provide a bit more about the data you need to update
    $string_of_text = "We would like to welcome Adam Smith-jones to our 3rd, 'I am addicted to stackoverflow-posting' event.";
     // both Smith-Jones and Stackoverflow-Posting should result
     // may be wrong
    $words = explode(' ',$string_of_text);

    foreach($words as $index=>$word) {
       if(false !== strpos('-',$word)) {
          $parts = explode('-',$word);
          $newWords = array;
          foreach($parts as $wordIndex=>$part) {
            $newWords[] = ucwords($part);
          }
          $words[$index] = implode('-',$newWords);
       }
    }

    $words = implode(' ',$words);

?>

Что-то похожее на это - untested - для того, чтобы убедиться, что я понимаю вопрос.

Ответ 7

Вы можете использовать " ucwords ", чтобы заглавные буквы были написаны одновременно, и " взорваться " и " взорваться " вместе, вот так:

ucwords(implode(" ", explode("_", "my_concatinated_word_string")));

Ответ 8

function capWords($string) {
    $string = str_replace("-", " - ", $string);
    $string = ucwords(strtolower($string));
    $string = str_replace(" - ", "-", $string);

    return $string;
}

Ответ 9

Вот простая функция, которая может преобразовать все слова в строке в заголовок:

function toTitleCase($string) {
    return preg_replace_callback('/\w+/', function ($match) {
        return ucfirst(strtolower($match[0]));
    }, $string);
}