ucfirst — Преобразует первый символ строки в верхний регистр


Содержание

Функция ucwords не работает с кириллицей и не преобразует в верхний регистр первый символ каждого слова

Помогите решить такую задачу!
есть переменная ($search) она выводит на сайте зоголовки (титлы) у меня возникла такая задача
если заголовок вида
(tree home)
то добавив функцию (ucwords)
вот исправно работующий пример для латиницы!

теперь в тит будет выводить вот так
(Tree Home)
делая заглавными первые буквы каждого слова, все это прекрасно работает так как мне нужно но только с латиницей, а вот
с кириллицей функция (ucwords) не хочет работать, и каждое слово остается с маленькой буквы

поиск в интернет помог найти вот такой код который будет работать и с кириллицей который я переделал под себя

но тут есть одна проблема, если заголовок который в базе данных вида (все слова с маленькой буквы)
то выводит в титле тогда так (Все слова с маленькой буквы) заменяя только первую букву на заглавную, а нужно чтобы вывадило
заглавными все слова в титл, вот так (Все Слова С Маленькой Буквы)

Пмогите пожалуйста решить эту проблему с этим кодом!

19.07.2020, 10:44

Сменить регистр первых букв каждого слова в фразе на верхний
Всем привет) Как сменить регистр первых букв каждого слова в фразе на верхний? пробовал 2.

при передачи данных методом POST не преобразует в верхний регистр
Прошу помощи в решении следующей проблемы: при передачи данных методом POST не преобразует в.

Перевести первый символ в верхний регистр
Здравствуйте. Программа создает строки, добавляет их в текст, меняет все символы в нижний регистр.

Перевести первый символ предложения, записанного в TextBox, в верхний регистр
Всем привет! Помогите разобратся с кодом: If txtName2.Tag = » Then txtName2.Tag =.

функция перевода в верхний регистр только первый буквы предложения
интересует мускул нашели и lower и lcase и многие другие а вот есть ли такая функция которая.

Преобразуйте первый символ в верхний регистр в каждой новой строке в переполнении стека

У меня есть следующий абзац:

Я хочу преобразовать первый символ в uppercase в каждом переводе строки.

Таким образом, абзац должен выглядеть так:

Пока что я могу преобразовать первый символ в верхний регистр, но он преобразует первые символы в каждом слове, а не в новых строках, используя ucfirst() а также ucword()

Есть ли способ решить эту проблему, используя ucfirst() или же preg_replace() функция?

Решение

Как насчет этого?

Другие решения

Вы могли бы использовать это.

i Модификатор говорит, что мы не заботимся о случае и m говорит, что каждая строка строки является новой строкой для ^ , Это будет использовать первую букву строки, предполагая, что она начинается с a-z.

Замените самый первый символ нижнего регистра в каждой строке на верхний регистр:

Как сделать первую букву заглавной php кирилица

Достаточно редко, но всё-же возникает такая необходимость, как сделать первую букву заглавной php кирилица.

Это когда первая буква слова становится большой. Применить это можно, например, для унификации написания имени пользователя, или, например, когда нужно автоматически составить текст в предложение.

Как сделать первую букву заглавной php латиница

Тут всё достаточно просто: в PHP есть 2 функции: ucfirst() и ucwords(). Первая делает только первую букву в строке заглавной, вторая делает первую букву каждого слова в строке заглавной.

В результате получим две строки:
First letters
и
First Letters

Видим разницу. С английскими текстами (или любыми другими), написанными латиницей проблем не будет.

Как сделать первую букву заглавной php кирилица Windows-1251 (CP-1251)

С кирилицей (русскими буквами) которые записаны в кодировки Windows-1251 тоже не будет больших проблем:

В результате получим две строки:
Первые буквы
и
Первые Буквы

Как сделать первую букву заглавной php кирилица UTF-8

Но как только дело доходит до UTF-8 начинаются проблемы, потому, что кирилица в UTF-8 занимает 2 байта, и поэтому ничего не получится. Для этого будем использовать «костыль» от Multibyte String Functions. Если этот плагин установлен на PHP, то можно просто использовать 2 аналогичные функции: mb_ucfirst и mb_convert_case.

А если их нет, то нужно дополнить код своими альтернативами:

Результатом этому коду станут такие строчки:

первые буквы
первые буквы
Первые буквы
Первые Буквы

Как видите, первые 2 строчки не сработали, из-за того, что обычные ucfirst и ucwords не умеют работать с кирилицей в UTF-8.

С помощью этих функций можно построить успешный бизнес на продвижении сайтов. Ну не только на этих функциях, но поверьте, в продвижении сайтов всегда нужно всё максимально автоматизировать.

Строка PHP преобразует первый символ в верхний регистр или строчный регистр

2 Frank [2010-08-05 17:47:00]

У меня есть два типа строк, ‘hello’, ‘helloThere’.

Я хочу изменить их, чтобы они читались как: ‘Hello’, ‘Hello There’ в зависимости от случая.

Что было бы хорошим способом сделать это?

php uppercase lowercase

7 ответов

1 Решение Ties [2010-08-05 17:53:00]

вы можете использовать ucwords , как все сказали. чтобы добавить пробел в helloThere , вы можете сделать $with_space = preg_replace(‘/[A-Z]/’,» $0″,$string); , затем ucwords($with_space);

Илон Маск рекомендует:  Контекстная реклама, как способ монетизации сайта

Чтобы преобразовать CamelCase в разные слова:

В верхнем регистре все слова первые буквы:

Возвращает строку с первой символ каждого слова в str капитализируется, если этот символ алфавитный.

Определение слова — любая строка символов, которые немедленно после пробела (Это: пробел, форма-фид, новая линия, возврат каретки, горизонтальная вкладка и вертикальная вкладка).

Это не будет разделять слова, которые удаляются вместе — вам нужно будет добавить пробелы в строку, если это необходимо для работы этой функции.

4 Sarfraz [2010-08-05 17:50:00]

Используйте функцию ucwords :

Чтобы заставить shure работать на других языках, UTF-8 может быть хорошей идеей для реализации. Im использую это доказательство воды для любых языков в моих установках wordpress.

Это делает первую букву в верхнем и нижнем регистре. Если для третьего arg установлено значение false (по умолчанию), остальная часть строки не обрабатывается. Тем не менее, кто-то здесь может предложить аргумент для повторного использования самой функции и mb заглавной буквы каждого слова после первого, чтобы быть более точным ответом на вопрос.

1 Angelo R. [2010-08-05 17:49:00]

В PHP много функций манипуляции строками. ucfirst() сделает это за вас.

ucfirst

ucfirst — Преобразует первый символ строки в верхний регистр

Описание

Возвращает строку str , в которой первый символ переведен в верхний регистр, если этот символ является буквой.

Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали «C», символ ä не будет преобразован.

Список параметров

Возвращаемые значения

Возвращает результирующую строку.

Примеры

Пример #1 Пример использования ucfirst()

= ‘hello world!’ ;
$foo = ucfirst ( $foo ); // Hello world!

$bar = ‘HELLO WORLD!’ ;
$bar = ucfirst ( $bar ); // HELLO WORLD!
$bar = ucfirst ( strtolower ( $bar )); // Hello world!
?>

Смотрите также

  • lcfirst() — Преобразует первый символ строки в нижний регистр
  • strtolower() — Преобразует строку в нижний регистр
  • strtoupper() — Преобразует строку в верхний регистр
  • ucwords() — Преобразует в верхний регистр первый символ каждого слова в строке

Коментарии

Here is a handy function that makes the first letter of everything in a sentence upercase. I used it to deal with titles of events posted on my website . I’ve added exceptions for uppercase words and lowercase words so roman numeral «IV» doesn’t get printed as «iv» and words like «a» and «the» and «of» stay lowercase.

function RemoveShouting($string)
<
$lower_exceptions = array(
«to» => «1», «a» => «1», «the» => «1», «of» => «1»
);

$higher_exceptions = array(
«I» => «1», «II» => «1», «III» => «1», «IV» => «1»,
«V» => «1», «VI» => «1», «VII» => «1», «VIII» => «1»,
«XI» => «1», «X» => «1»
);

$words = split(» «, $string);
$newwords = array();

foreach ($words as $word)
<
if (!$higher_exceptions[$word])
$word = strtolower($word);
if (!$lower_exceptions[$word])
$word = ucfirst($word);
array_push($newwords, $word);

return join(» «, $newwords);
>

In the event you sort of need multiple delimiters to apply the same action to, you can preg_replace this «second delimiter» enveloping it with your actual delimiter.

A for instance, would be if you wanted to use something like Lee’s FormatName function in an input box designed for their full name as this script was only designed to check the last name as if it were the entire string. The problem is that you still want support for double-barreled names and you still want to be able to support the possibility that if the second part of the double-barreled name starts with «mc», that it will still be formatted correctly.

This example does a preg_replace that surrounds the separator with your actual delimiter. This is just a really quick alternative to writing some bigger fancier blah-blah function. If there’s a shorter, simpler way to do it, feel free to inform me. (Emphasis on shorter and simpler because that was the whole point of this.) :D

Here’s the example. I’ve removed Lee’s comments as not to confuse them with my own.

function FormatName ( $name = NULL )
<
if (empty( $name ))
return false ;

$name = strtolower ( $name );
$name = preg_replace ( «[\-]» , » — » , $name ); // Surround hyphens with our delimiter so our strncmp is accurate
if ( preg_match ( «/^[a-z]<2,>$/i» , $name )) // Simple preg_match if statement
<

$names_array = explode ( ‘ ‘ , $name ); // Set the delimiter as a space.

for ( $i = 0 ; $i count ( $names_array ); $i ++)
<
if ( strncmp ( $names_array [ $i ], ‘mc’ , 2 ) == 0 || ereg ( ‘^[oO]\'[a-zA-Z]’ , $names_array [ $i ]))
<
$names_array [ $i ][ 2 ] = strtoupper ( $names_array [ $i ][ 2 ]);
>
$names_array [ $i ] = ucfirst ( $names_array [ $i ]);

$name = implode ( ‘ ‘ , $names_array );
$name = preg_replace ( «[ \- ]» , «-» , $name ); // Remove the extra instances of our delimiter
return ucwords ( $name );

Note: the return for this function changed in versions 4.3 when a string is passed of length 0. In 4.3 a string of length 0 is returned.

$name = ucfirst(«»);
var_dump($name);

$name = ucfirst(«owen»);
var_dump($name);

Results for 4.3:
string(0) «» string(4) «Owen»

Ah, the last code were spoiled, here is the fixed one:

function uc_first ( $str ) <
$str [ 0 ] = strtr ( $str ,
«abcdefghijklmnopqrstuvwxyz» .
«\x9C\x9A\xE0\xE1\xE2\xE3» .
«\xE4\xE5\xE6\xE7\xE8\xE9» .
«\xEA\xEB\xEC\xED\xEE\xEF» .
«\xF0\xF1\xF2\xF3\xF4\xF5» .
«\xF6\xF8\xF9\xFA\xFB\xFC» .
«\xFD\xFE\xFF» ,
«ABCDEFGHIJKLMNOPQRSTUVWXYZ» .
«\x8C\x8A\xC0\xC1\xC2\xC3\xC4» .
«\xC5\xC6\xC7\xC8\xC9\xCA\xCB» .
«\xCC\xCD\xCE\xCF\xD0\xD1\xD2» .
«\xD3\xD4\xD5\xD6\xD8\xD9\xDA» .
«\xDB\xDC\xDD\xDE\x9F» );
return $str ;
>

?>

So, this function changes also other letters into uppercase, ucfirst() does only change: a-z to: A-Z.

This is a simple code to get all the ‘bad words’, stored in a database, out of the text. You could use str_ireplace but since that’s installed on PHP5 only, this works as well. It strtolowers the text first then places capitals with ucfirst() where it thinks a capital should be placed, at a new sentence. The previous sentence is ended by ‘. ‘ then.

function filter ( $text ) <
$filters = mysql_query ( «SELECT word,result FROM filter» );
while( $filter = mysql_fetch_array ( $filters )) <
$text = str_replace ( $filter [ word ], $filter [ result ], strtolower ( $text ));
$parts = explode ( «. » , $text );
for( $i = 0 ; $i count ( $parts ); $i ++) <
$parts [ $i ]= ucfirst ( $parts [ $i ]);
>
$text = implode ( «. » , $parts );
>
return $text ;
>
?>

Илон Маск рекомендует:  Что такое девайс доступным языком!

Simple multi-bytes ucfirst():

function my_mb_ucfirst ( $str ) <
$fc = mb_strtoupper ( mb_substr ( $str , 0 , 1 ));
return $fc . mb_substr ( $str , 1 );
>
?>

plemieux’ function did not work for me without passing the encoding to every single mb function (despite ini_set(‘default_charset’, ‘utf-8’) at the top of the script). This is the example that works in my application (PHP 4.3):

function my_mb_ucfirst ( $str , $e = ‘utf-8’ ) <
$fc = mb_strtoupper ( mb_substr ( $str , 0 , 1 , $e ), $e );
return $fc . mb_substr ( $str , 1 , mb_strlen ( $str , $e ), $e );
>
?>

Here is the fixed function for Turkish alphabet..

function uc_first ( $str ) <
$str [ 0 ] = strtr ( $str ,
«abcdefgh�ijklmnopqrstuvwxyz» .
«\x9C\x9A\xE0\xE1\xE2\xE3» .
«\xE4\xE5\xE6\xE7\xE8\xE9» .
«\xEA\xEB\xEC\xED\xEE\xEF» .
«\xF0\xF1\xF2\xF3\xF4\xF5» .
«\xF6\xF8\xF9\xFA\xFB\xFC» .
«\xFE\xFF» ,
«ABCDEFGHI�JKLMNOPQRSTUVWXYZ» .
«\x8C\x8A\xC0\xC1\xC2\xC3\xC4» .
«\xC5\xC6\xC7\xC8\xC9\xCA\xCB» .
«\xCC\xCD\xCE\xCF\xD0\xD1\xD2» .
«\xD3\xD4\xD5\xD6\xD8\xD9\xDA» .
«\xDB\xDC\xDE\x9F» );
return $str ;
>

A combination of the below functions to enable ucfirst for multibyte strings in a shared hosting environment (where you can not always count on mbstring to be installed):

function my_mb_ucfirst ( $str , $e = ‘utf-8’ ) <
if ( function_exists ( ‘mb_strtoupper’ )) <
$fc = mb_strtoupper ( mb_substr ( $str , 0 , 1 , $e ), $e );
return $fc . mb_substr ( $str , 1 , mb_strlen ( $str , $e ), $e );
>
else <
$str = utf8_decode ( $str );
$str [ 0 ] = strtr ( $str [ 0 ],
«abcdefghýijklmnopqrstuvwxyz» .
«\x9C\x9A\xE0\xE1\xE2\xE3» .
«\xE4\xE5\xE6\xE7\xE8\xE9» .
«\xEA\xEB\xEC\xED\xEE\xEF» .
«\xF0\xF1\xF2\xF3\xF4\xF5» .
«\xF6\xF8\xF9\xFA\xFB\xFC» .
«\xFE\xFF» ,
«ABCDEFGHÝIJKLMNOPQRSTUVWXYZ» .
«\x8C\x8A\xC0\xC1\xC2\xC3\xC4» .
«\xC5\xC6\xC7\xC8\xC9\xCA\xCB» .
«\xCC\xCD\xCE\xCF\xD0\xD1\xD2» .
«\xD3\xD4\xD5\xD6\xD8\xD9\xDA» .
«\xDB\xDC\xDE\x9F» );
return utf8_encode ( $str );
>
>
?>

This is what you would expect php to deliver if there was a built-in function named ucsentence.

function ucsentence ($string) <
$string = explode (‘.’, $string);
$count = count ($string);
for ($i = 0; $i 0) <
$string[$i] = ‘ ‘ . $string[$i];
>
>
$string = implode (‘.’, $string);
return $string;
>

Some simple function for cyrillic and latin letters both:

function rucfirst($str) <
if(ord(substr($str,0,1))

I made a small change. Now it takes care of points in numbers

function ucsentence ($string) <
$string = explode (‘.’, $string);
$count = count ($string);
for ($i = 0; $i 0) <
if ((ord($string[$i]<0>) 57)) <
$string[$i] = ‘ ‘ . $string[$i];
>
>
>
$string = implode (‘.’, $string);
return $string;
>

@ zee: this should solve your !, ?, and any punctuations you want to add. It can probably be cleaned up a bit.

function sentence_cap ( $impexp , $sentence_split ) <
$textbad = explode ( $impexp , $sentence_split );
$newtext = array();
foreach ( $textbad as $sentence ) <
$sentencegood = ucfirst ( $sentence );
$newtext [] = $sentencegood ;
>
$textgood = implode ( $impexp , $newtext );
return $textgood ;
>

$text = «this is a sentence. this is another sentence! this is the fourth sentence? no, this is the fourth sentence.» ;
$text = sentence_cap ( «. » , $text );
$text = sentence_cap ( «! » , $text );
$text = sentence_cap ( «? » , $text );

echo $text ; // This is a sentence. This is another sentence! This is the fourth sentence? No, this is the fourth sentence.

One thing I would do to make this more unviersally work would be to add strtolower() around your $sentence. Doing this will allow you to convert an all caps text block as well as an all lowercase text block.

function sentence_cap ( $impexp , $sentence_split ) <
$textbad = explode ( $impexp , $sentence_split );
$newtext = array();
foreach ( $textbad as $sentence ) <
$sentencegood = ucfirst ( strtolower ( $sentence ));
$newtext [] = $sentencegood ;
>
$textgood = implode ( $impexp , $newtext );
return $textgood ;
>

$text = «this is a sentence. this is another sentence! this is the fourth sentence? no, this is the fourth sentence.» ;
$text = sentence_cap ( «. » , $text );
$text = sentence_cap ( «! » , $text );
$text = sentence_cap ( «? » , $text );

echo $text ; // This is a sentence. This is another sentence! This is the fourth sentence? No, this is the fourth sentence.

@adefoor, Ken and Zee

Changing the case can only be done by understanding the text. Take for example «USA», «Sunday», «March», «I am . «, abbreviations like «prob.» and so on.

Inspired by the lcfirst function a simple mb_lcfirst to cope with multibyte strings:

function mb_lcfirst ( $str , $enc = null )
<
if( $enc === null ) $enc = mb_internal_encoding ();
return mb_strtolower ( mb_substr ( $str , 0 , 1 , $enc ), $enc ). mb_substr ( $str , 1 , mb_strlen ( $str , $enc ), $enc );
>
?>

Here’s a function to capitalize segments of a name, and put the rest into lower case. You can pass the characters you want to use as delimiters.

i.e. echo nameize ( «john o’grady-smith» ); ?>

returns John O’Grady-Smith

function nameize ( $str , $a_char = array( «‘» , «-» , » » )) <
//$str contains the complete raw name string
//$a_char is an array containing the characters we use as separators for capitalization. If you don’t pass anything, there are three in there as default.
$string = strtolower ( $str );
foreach ( $a_char as $temp ) <
$pos = strpos ( $string , $temp );
if ( $pos ) <
//we are in the loop because we found one of the special characters in the array, so lets split it up into chunks and capitalize each one.
$mend = » ;
$a_split = explode ( $temp , $string );
foreach ( $a_split as $temp2 ) <
//capitalize each portion of the string which was separated at a special character
$mend .= ucfirst ( $temp2 ). $temp ;
>
$string = substr ( $mend , 0 ,- 1 );
>
>
return ucfirst ( $string );
>

?>

it also check is mb support enabled or not

This is what I use for converting strings to sentence case:

function sentence_case ( $string ) <
$sentences = preg_split ( ‘/([. ]+)/’ , $string , — 1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
$new_string = » ;
foreach ( $sentences as $key => $sentence ) <
$new_string .= ( $key & 1 ) == 0 ?
ucfirst ( strtolower ( trim ( $sentence ))) :
$sentence . ‘ ‘ ;
>
return trim ( $new_string );
>

print sentence_case ( ‘HMM. WOW! WHAT?’ );

// Outputs: «Hmm. Wow! What?»
?>

For some reason this worked for me.

Mac OS 10.5.1
PHP 5.2.6

/**
* ucfirst UTF-8 aware function
*
* @param string $string
* @return string
* @see http://ca.php.net/ucfirst
*/
function my_ucfirst ( $string , $e = ‘utf-8’ ) <
if ( function_exists ( ‘mb_strtoupper’ ) && function_exists ( ‘mb_substr’ ) && !empty( $string )) <
$string = mb_strtolower ( $string , $e );
$upper = mb_strtoupper ( $string , $e );
preg_match ( ‘#(.)#us’ , $upper , $matches );
$string = $matches [ 1 ] . mb_substr ( $string , 1 , mb_strlen ( $string , $e ), $e );
> else <
$string = ucfirst ( $string );
>
return $string ;
>
?>

Илон Маск рекомендует:  Книги по изучению MySQL

Svetoslav Marinov
http://slavi.biz

Simple function for use ucfirst with utf-8 encoded cyrylic text

public function capitalize_first ( $str ) <
$line = iconv ( «UTF-8» , «Windows-1251» , $str ); // convert to windows-1251
$line = ucfirst ( $line );
$line = iconv ( «Windows-1251» , «UTF-8» , $line ); // convert back to utf-8

For lithuanian text with utf-8 encoding I use two functions (thanks [mattalexxpub at gmail dot com] and Svetoslav Marinov)

function my_ucfirst ( $string , $e = ‘utf-8’ ) <
if ( function_exists ( ‘mb_strtoupper’ ) && function_exists ( ‘mb_substr’ ) && !empty( $string )) <
$string = mb_strtolower ( $string , $e );
$upper = mb_strtoupper ( $string , $e );
preg_match ( ‘#(.)#us’ , $upper , $matches );
$string = $matches [ 1 ] . mb_substr ( $string , 1 , mb_strlen ( $string , $e ), $e );
>
else <
$string = ucfirst ( $string );
>
return $string ;
>

function sentence_case ( $string ) <
$sentences = preg_split ( ‘/([. ]+)/’ , $string , — 1 , PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE );
$new_string = » ;
foreach ( $sentences as $key => $sentence ) <
$new_string .= ( $key & 1 ) == 0 ?
my_ucfirst ( strtolower ( trim ( $sentence ))) :
$sentence . ‘ ‘ ;
>
return trim ( $new_string );
>
?>

Преобразование первого символа строки в верхний регистр

У меня есть массив JavaScript, в котором хранится переменная String. Я попытался использовать код ниже, который поможет мне преобразовать переменную Javascript в прописную букву,

но я хочу преобразовать только первый символ переменной Javascript в верхний регистр.

Требуемый вывод: One,Two,Three,Four

Ты почти там. Вместо верхней строки всей строки в верхнем регистре вводится только первый символ.

Выход

Если для представления вам нужен верхний регистр для презентации, вы можете просто использовать css для этого!

ГЛАВА 8. Строки и регулярные выражения

В РНР существует четыре функции, предназначенных для изменения регистра строки:

Все эти функции подробно описаны ниже.

strtolower()

Функция strtolower() преобразует все алфавитные символы строки к нижнему регистру.

Синтаксис функции strtolower():

Неалфавитные символы функцией не изменяются. Преобразование строки к нижнему регистру функцией strtolower() продемонстрировано в следующем примере:

strtoupper()

Строки можно преобразовывать не только к нижнему, но и к верхнему регистру. Преобразование выполняется функцией strtoupper(), имеющей следующий синтаксис:

Неалфавитные символы функцией не изменяются. Преобразование строки к верхнему регистру функцией strtoupper() продемонстрировано в следующем примере:

ucfirst()

Функция ucfirst() преобразует к верхнему регистру первый символ строки — при условии, что он является алфавитным символом.

Синтаксис функции ucfirst():

Неалфавитные символы функцией не изменяются. Преобразование первого символа строки функцией ucfirst() продемонстрировано в следующем примере:

ucwords()

Функция ucwords() преобразует к верхнему регистру первую букву каждого слова в строке.

Синтаксис функции ucwords():

Неалфавитные символы функцией не изменяются. «Слово» определяется как последовательность символов, отделенная от других элементов строки пробелами. В следующем примере продемонстрировано преобразование первых символов слов функцией ucwords():

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

ucfirst Функция зменяет регистрор первгого символа строки на заглавный

Не знаю где ее можно применить, но как вариант могу предположить следующие:
Далеко не все утруждают себя писать в чате с большой буквы, с помощью функции ucfirst можно это изменить.

  • string[] — Строка(массив) с которой будет производиться работа функции.

Описание:
Для данного примера мы зарегистрировали команду «say«, что бы все что сказал пользователь обрабатывалось нашей функцией.
Для начала мы регистрируем новый массив, куда поместим строку, написанную пользователем.
Затем с помощью функции read_args получаем саму строку.

Функция remove_quotes, убирает кавычки, так как то что мы получили экранируется кавычками
Если написать:

А нам необходим именно первый символ, буква m, а не кавычка. Для этого мы и применили данную функцию.

Для наглядного примера сначала выводим необработанное функцией ucfirst сообщение, а затем обработанное.

Давайте сделаем общение культурнее вместе ;)

Ucfirst — Преобразует первый символ строки в верхний регистр

// Функция для всех кодировок
if(! function_exists ( ‘mb_ucfirst’ ))
<
function mb_ucfirst ( $str , $encoding = NULL )
<
if( $encoding === NULL )
<
$encoding = mb_internal_encoding ();
>

return mb_substr ( mb_strtoupper ( $str , $encoding ), 0 , 1 , $encoding ) . mb_substr ( $str , 1 , mb_strlen ( $str )- 1 , $encoding );
>
>

Вот эта нормально работает:

function my_ucfirst($string, $e =’utf-8′) <
if (function_exists(‘mb_strtoupper’) && function_exists(‘mb_substr’) && !empty($string)) <
$string = mb_strtolower($string, $e);
$upper = mb_strtoupper($string, $e);
preg_match(‘#(.)#us’, $upper, $matches);
$string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e);
> else <
$string = ucfirst($string);
>
return $string;
>

12.07.2015, 23:31 #2
Сказали спасибо:

// Функция для всех кодировок
if(! function_exists ( ‘mb_ucfirst’ ))
<
function mb_ucfirst ( $str , $encoding = NULL )
<
if( $encoding === NULL )
<
$encoding = mb_internal_encoding ( «UTF-8» );
>

return mb_substr ( mb_strtoupper ( $str , $encoding ), 0 , 1 , $encoding ) . mb_substr ( $str , 1 , mb_strlen ( $str )- 1 , $encoding );
>
>

12.07.2015, 23:38 #3
Сказали спасибо:
Хелпзонович
Посмотреть профиль
Посетить домашнюю страницу Хелпзонович
Найти ещё сообщения от Хелпзонович
12.07.2015, 23:52 #4
Сказали спасибо:

Режет первый символ, а иногда и несколько:
яблоко
result: блоко
молоко
result: око

Warning: mb_strtoupper() [function.mb-strtoupper]: Unknown encoding «1» in Z:\home\algorithms.ru\www\includes\function.php on line 12

Warning: mb_substr() [function.mb-substr]: Unknown encoding «1» in Z:\home\algorithms.ru\www\includes\function.php on line 12

Warning: mb_substr() [function.mb-substr]: Unknown encoding «1» in Z:\home\algorithms.ru\www\includes\function.php on line 12

Кодировка в БД: utf8_unicode_ci
Кодировка переменной в файле скрипта при проверке mb_detect_encoding выдает: UTF-8
Кодировка сервера: UTF-8 Unicode (utf8)
Сопоставление кодировки соединения с MySQL: utf8_unicode_ci
В чем тут дело не могу понять?

Как первую букву в слове перевести в верхний регистр (сделать заглавной) на PHP

//Дано слово
//$q = «поиск»;

С помощью какого скрипта можно в этом слове первую букву сделать заглавной?
//$q = «Поиск»;

Описание
string ucfirst ( string str )

Возвращает строку string, в которой первый символ переведен в верхний регистр, если этот символ буквенный.

Принадлежность того или иного символа к буквенным определяется с учетом текущей локали. Это означает, что, например, в используемой по умолчанию локали «C» locale, символ? не будет преобразован.

Пример 1. Пример использования ucfirst()

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL
13.07.2015, 15:06 #5