Изменить первое слово в предложении на верхний регистр

Я хочу преобразовать первое слово предложения в верхний регистр, но не знаю, как мне это сделать. Это то, что у меня есть до сих пор:

$o = "";

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

$o = strtoupper($m);

} else {

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

}

Я хотел бы использовать uppercase из идентификатора hpspecial, где HP — это первая часть предложения, написанная с заглавной буквы, но это приведет к тому, что все предложение будет прописным. Как мне сделать HP только в верхнем регистре предложения?


person ash    schedule 12.04.2013    source источник
comment
Можете ли вы дать полное исходное предложение и во что вы хотите его преобразовать? Ваш вопрос мне не очень ясен.   -  person nkkollaw    schedule 12.04.2013


Ответы (4)


вы можете поставить над ним точку 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;

действующий результат

person NullPoiиteя    schedule 12.04.2013
comment
Спасибо. Но я бы хотел, чтобы все слово ПРЕДЛОЖЕНИЯ было в верхнем регистре, а не первая буква. я знаю, что мне нужно использовать strtoupper, но в моем коде, который я предоставил, он преобразует все предложение «hpspecial» в верхний регистр, я просто хотел бы, чтобы ПЕРВОЕ слово предложения было верхним. - person ash; 12.04.2013

Как насчет такого:

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

echo implode(' ' , $arr);

Я не знаю, есть ли встроенная функция, но я думаю, что это должно работать?

person nkkollaw    schedule 12.04.2013

Кажется, у вас нет особого шаблона, почему бы просто не использовать preg_replace?

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

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

Вы все равно должны сделать это так, потому что вы не можете реально отличить HP от Special (по крайней мере, простыми способами);

Вы можете использовать тот же подход, используя str_replace, поскольку вы не используете сложные шаблоны, насколько я вижу.

Иногда самое простое решение — лучшее

person aleation    schedule 12.04.2013

вы можете использовать пользовательскую функцию, например

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

поэтому первое слово перед пробелом будет верхним для всего предложения.

person liyakat    schedule 12.04.2013