短划线后PHP大写

时间:2011-04-05 01:18:35

标签: php

$q = durham-region;

$q = ucfirst($q);

$q = Durham-region;

在破折号(达勒姆地区)之后,我如何将这封信大写?我是否必须将两者分开并大写?

9 个答案:

答案 0 :(得分:16)

更新解决方案

自PHP 5.5起,e的{​​{1}}修饰符已被弃用。现在最好的选择是使用其中一个不使用它的建议,例如:

preg_replace

$q = preg_replace_callback('/(\w+)/g', create_function('$m','return ucfirst($m[1]);'), $q)

原始答案

您可以通过以下方式使用$q = implode('-', array_map('ucfirst', explode('-', $q))); 修饰符来使用preg_replace

e

答案 1 :(得分:9)

使用e PCRE修饰符不会包含的单行:

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

答案 2 :(得分:6)

感谢ucwordsdelimiter参数,自PHP 5.4.32和5.5.16以来,它就像这样简单:

$string = ucwords($string, "-");

答案 3 :(得分:1)

另一个oneliner:

str_replace(' ','',ucwords(str_replace('-',' ',$action)))

答案 4 :(得分:0)

是。 ucfirst()只是将字符串的第一个字母大写。如果您想要多个字母大写,则必须创建多个字符串。

$strings = explode("-", $string);
$newString = "";
foreach($strings as $string){
    $newString += ucfirst($string);
}

function ucfirst_all($delimiter, $string){
    $strings = explode("-", $string);
    $newString = "";
    foreach($strings as $string){
        $newString += ucfirst($string);
    }
    return $newString;
}

答案 5 :(得分:0)

您可以使用正则表达式回调方法执行此操作:

$q = preg_replace_callback('/\-([a-z]+)/g', create_function(
            '$m', 'return "-" . ucfirst($m[1]);'
        ),$q)

答案 6 :(得分:0)

请务必注意,此处提供的解决方案不适用于UTF-8字符串!

$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει-υπέρ νωθρού κυνός";
$str = explode('-', mb_convert_case( $str, MB_CASE_TITLE ) );
$str = implode('-', array_map('mb_convert_case', $str, array(MB_CASE_TITLE, "UTF-8")) );
echo $str;

// str= Τάχιστη Αλώπηξ Βαφήσ Ψημένη Γη, Δρασκελίζει-Υπέρ Νωθρού Κυνόσ

答案 7 :(得分:0)

外观

api.php

上面的函数返回输入文本

如果您只需要一个破折号后面的大写字母,例如城市名称(Jastrzębie-Zdrój)就足够了,但是如果您需要多个......,只需要计算多少个数组元素(在上面的代码中爆炸后) )存在,然后使用循环。

迎接,

答案 8 :(得分:0)

这是一个通用函数,可让您在任何字符或字符串之后大写。在特定情况下,提问者问到,针是破折号。

function capitalizeAfter( $needle, $haystack ) {

  $haystack = str_replace( $needle . "a", $needle . "A", $haystack );
  $haystack = str_replace( $needle . "b", $needle . "B", $haystack );
  $haystack = str_replace( $needle . "c", $needle . "C", $haystack );
  $haystack = str_replace( $needle . "d", $needle . "D", $haystack );
  $haystack = str_replace( $needle . "e", $needle . "E", $haystack );
  $haystack = str_replace( $needle . "f", $needle . "F", $haystack );
  $haystack = str_replace( $needle . "g", $needle . "G", $haystack );
  $haystack = str_replace( $needle . "h", $needle . "H", $haystack );
  $haystack = str_replace( $needle . "i", $needle . "I", $haystack );
  $haystack = str_replace( $needle . "j", $needle . "J", $haystack );
  $haystack = str_replace( $needle . "k", $needle . "K", $haystack );
  $haystack = str_replace( $needle . "l", $needle . "L", $haystack );
  $haystack = str_replace( $needle . "m", $needle . "M", $haystack );
  $haystack = str_replace( $needle . "n", $needle . "N", $haystack );
  $haystack = str_replace( $needle . "o", $needle . "O", $haystack );
  $haystack = str_replace( $needle . "p", $needle . "P", $haystack );
  $haystack = str_replace( $needle . "q", $needle . "Q", $haystack );
  $haystack = str_replace( $needle . "r", $needle . "R", $haystack );
  $haystack = str_replace( $needle . "s", $needle . "S", $haystack );
  $haystack = str_replace( $needle . "t", $needle . "T", $haystack );
  $haystack = str_replace( $needle . "u", $needle . "U", $haystack );
  $haystack = str_replace( $needle . "v", $needle . "V", $haystack );
  $haystack = str_replace( $needle . "w", $needle . "W", $haystack );
  $haystack = str_replace( $needle . "x", $needle . "X", $haystack );
  $haystack = str_replace( $needle . "y", $needle . "Y", $haystack );
  $haystack = str_replace( $needle . "z", $needle . "Z", $haystack );

  return $haystack;

}