4

我希望将句子的第一个单词转换为大写,但不确定我将如何去做。这是我到目前为止所拥有的:

$o = "";

  if((preg_match("/ibm/i", $m)) || (preg_match("/hpspecial/i", $m))) {

$o = strtoupper($m);

} else {

  $o = ucwords(strtolower($m));

}

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

4

4 回答 4

6

你可以点他的ucfirst

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

喜欢

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

实时输出

编辑:要使其第一个单词大写,您可以这样做

<?php
$foo = 'hello form world ';

$pieces = explode(" ", $foo);
$pieces[0] = strtoupper($pieces[0]);
$imp = implode(" ", $pieces);
echo $imp;

实时结果

于 2013-04-12T09:38:01.677 回答
1

像这样的东西怎么样:

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

echo implode(' ' , $arr);

我不知道是否有内置功能,但我认为这应该可以吗?

于 2013-04-12T09:56:23.867 回答
-1

您可以使用自定义功能,例如

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

$string = '你好,世界。这是一个测验。'; 回声 $s = uc_first_word ($string)

所以输出将是

HELLO world. This is a test

所以空格前的第一个词将与整个句子一样大。

于 2013-04-12T09:56:02.670 回答
-1

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

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

$string = preg_replace($search, $replace, $string);

无论如何,您都必须这样做,因为您无法真正将 HP 与 Special 区分开来(至少通过简单的方法);

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

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

于 2013-04-12T09:51:28.633 回答