将句子中的第一个单词改为大写


Change first word in a sentence to uppercase

我想把一个句子的第一个单词转换成大写,但不确定我该如何去做。这是我目前所看到的:

$o = "";
  if((preg_match("/ibm/i", $m)) || (preg_match("/hpspecial/i", $m))) {
$o = strtoupper($m);
} else {
  $o = ucwords(strtolower($m));
}

我想使用hpspecial ID中的uppercase,其中HP是句子的第一部分要大写,但这将大写整个句子。如何使句子的HP只大写?

你可以通过 ucfirst

ucfirst -使字符串的第一个字符大写

$foo = 'hello form world';
$foo = ucfirst($foo); 

生活输出

edit:让首字母大写,你可以这样做

<?php
$foo = 'hello form world ';
$pieces = explode(" ", $foo);
$pieces[0] = strtoupper($pieces[0]);
$imp = implode(" ", $pieces);
echo $imp;

生活结果

这样如何:

$arr = explode(' ');
$arr[0] = strtoupper($arr[0]);
echo implode(' ' , $arr);

我不知道是否有一个内置的函数,但我认为这应该工作?

看来你并没有特别的模式,为什么不直接使用preg_replace呢?

$search = array('/ibm/i', '/hpspecial/i');
$replace = array('IBM', 'HPspecial');
$string = preg_replace($search, $replace, $string);

你必须这样做,因为你不能真正区分HP和Special(至少用简单的方法);

你可以使用相同的方法使用str_replace实际上,因为你不使用复杂的模式,据我所知。

有时候最简单的解决方案就是最好的

您可以使用自定义函数

function uc_first_word ($string)
{
   $s = explode(' ', $string);   
   $s[0] = strtoupper($s[0]);   
   $s = implode(' ', $s);
   return $s;
}

$string = 'Hello world. '这是一次考验。"Echo $s = uc_first_word ($string)

那么输出将是

HELLO world. This is a test