Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слова после точки с заглавной буквы 
:(
    Опции темы
bubl1k
Дата 17.2.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Добрый день ув. программисты, это снова я - со своими тупыми вопросами smile
Допустим есть текст:
Цитата

мама мыла раму. папа пилил маму. 

На выходе он должен стать:
Цитата

Мама мыла раму. Папа пилил маму. 

 smile Как сие чудо реализовать? smile 

Это сообщение отредактировал(а) bubl1k - 17.2.2008, 16:25
PM MAIL ICQ   Вверх
Staind
Дата 17.2.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



Делаешь цикл от первого символа до последнего.
Чтобы узнать где нужно ставить большую букву, будем проверять так называемое "прерывание":
ЕСЛИ текущий символ пробел И следующий символ НЕ пробел, то применяем функцию strtoupper к символу.
Все.
К примеру вот так (ко всем элементам в строке будем обращатся как к массиву, первый элемент всегда идет под ключем нуль):

Код

$string = "Проверка, проверка раз два три... работает !";
//Создаем цикл от первого (нуль - это и есть первый символ в строке) до конца (узнаем конец с помощью уже знакомой функцией strlen
for ($i=0;$i<=strlen($string);$i++) 
{
//Если текущий символ ПРОБЕЛ и последующий символ НЕ ПРОБЕЛ, то меняем регистр у последующего символа
   if ($string[$i]==' ' && $string[$i+1]!=' ')
   {
      $string[$i+1] = strtoupper($string[$i+1]);
   }
}
//Проверяем
echo $string;


Это сообщение отредактировал(а) Staind - 17.2.2008, 17:33
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
bubl1k
Дата 17.2.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Цитата

Делаешь цикл от первого символа до последнего.
Чтобы узнать где нужно ставить большую букву, будем проверять так называемое "прерывание":
ЕСЛИ текущий символ пробел И следующий символ НЕ пробел, то применяем функцию strtoupper к символу.
Все. 

Как бы мой мозг медленно, но верно расплавился, огромное человеческое спасибо за ответ! Ну можно примерчик  smile 
PM MAIL ICQ   Вверх
Staind
Дата 17.2.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



Отослал, в первом моем посте примерчик приложил smile Удачи.

Это сообщение отредактировал(а) Staind - 17.2.2008, 17:31
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
bubl1k
Дата 17.2.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Staind, спасибо, о великий пхп маг  smile 
PM MAIL ICQ   Вверх
Staind
Дата 17.2.2008, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



2bubl1k, блин, сорри, код немного некорректен, я не правильно понял твою задачу.
Вот так, примерно, нужно:
Код

$string = "Проверка. раз, два, три. работает!";
//Создаем цикл от первого (нуль - это и есть первый символ в строке) до конца (узнаем конец с помощью уже знакомой функцией strlen
for ($i=0;$i<strlen($string);$i++) 
{
//Если текущий символ ПРОБЕЛ и последующий символ НЕ ПРОБЕЛ, то меняем регистр у последующего символа
   if ( ($string[$i]=='.' || $string[$i]=='!' || $string[$i]=='?') && isset($string[$i+1]) && $string[$i+1]==' ' && isset($string[$i+2]) )
   {
      $string[$i+2] = strtoupper($string[$i+2]);
   }
}
//Проверяем
echo $string;

Вот так должно нормально после точки.

Это сообщение отредактировал(а) Staind - 17.2.2008, 21:10
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
HackMan
Дата 17.2.2008, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Ошибочка  smile 
Цикл надо делать не по условию <=, а только по <. Иначе ты последний элемент сверяешь с несуществующим. PHP может и промолчит, а вот Си вылетел бы с ошибкой


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Staind
Дата 17.2.2008, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



2HackMan, понял, правил, спасибо.
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
HackMan
Дата 17.2.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Пожалуйста  smile 


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
bubl1k
Дата 18.2.2008, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Не заработало :(
Результат:
Цитата

Проверка. раз, два, три. работает!


upd: разобрался - если кодировка win-1251 то работает, если utf-8 то нет, а мне utf-8 нужен как эту проблему решить?

Это сообщение отредактировал(а) bubl1k - 18.2.2008, 10:02
PM MAIL ICQ   Вверх
HackMan
Дата 18.2.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



Ой, utf-8 - это отдельная тема  smile 
Поищи по форуму, уже не одна такая тема была. Существует несколько разновидностей кодировки utf-8. В одной символы и, й - это одно и тоже, в другой и, И - одно и тоже, но и, й - разные... Некоторые функции для обработки текста нужно использовать другие. С этой кодировкой много головняка...

Это сообщение отредактировал(а) HackMan - 18.2.2008, 11:23


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
GeneralElectric
Дата 18.2.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



HackMan, разновидность одна =)
PM MAIL   Вверх
bubl1k
Дата 18.2.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Решил проблему так
utf-8>win-1251>обработка>utf-8

Но может существуют более хорошие способы?
PM MAIL ICQ   Вверх
GeneralElectric
Дата 18.2.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Заменить все функции на их mb_ эквиваленты?


Это сообщение отредактировал(а) GeneralElectric - 18.2.2008, 11:48
PM MAIL   Вверх
bubl1k
Дата 18.2.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Цитата(GeneralElectric @  18.2.2008,  11:47 Найти цитируемый пост)
Заменить все функции на их mb_ эквиваленты?

Вопросом на вопрос не прилично отвечать  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1051 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.