Я пытаюсь отобразить верхний регистр текста только первым символом в фразе. Если есть какие-либо специальные символы, их следует игнорировать.
например:
РАЗДЕЛ 1: ИДЕНТИФИКАЦИЯ ВЕЩЕСТВА / ПОДГОТОВКА И
КОМПАНИЯ / ПРЕДПРИНИМАТЕЛЯ
выше мой текст, и я хочу, чтобы вышеуказанный текст отображался как
Раздел 1: Идентификация вещества / препарата и
компания / предприятие
на данный момент я пытался echo ucfirst (strtolower ($ word));
какие выводы
Раздел 1: идентификация вещества / препарата и
компания / предприятие
Как мне этого добиться?
Спасибо
Вы можете split
с помощью :
окружен необязательным интервалом и вызовом ucfirst
на каждый разделенный элемент, а затем соедините их вместе:
$out="";
foreach (preg_split('/(\h*[:.]\h*)/', strtolower($str), 0, PREG_SPLIT_DELIM_CAPTURE) as $s)
$out .= ucfirst($s)
echo "$out\n";
//=> Section 1: Identification of the substance/preparation and of the company/undertaking
\h*[:.]\h*
распадается на :
или же .
с дополнительным интервалом с каждой стороны. Вы можете добавить больше символов здесь в класс символов, на которые вы хотите разделить.
Вы можете разделить на две части:
$exploded = explode(': ', $phrase);
затем сначала каждую часть:
$exploded[0] = ucfirst($exploded[0]);
$exploded[1] = ucfirst(strtolower($exploded[1]));
наконец вы можете присоединиться ко всем:
echo join(': ', $exploded);
$phrase = 'SECTION 1: CIAO MONDO';
$exploded = explode(': ', $phrase);
$exploded[0] = ucfirst($exploded[0]);
$exploded[1] = ucfirst(strtolower($exploded[1]));
echo join(': ', $exploded); // Section 1: Ciao mondo