Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: инвертировать регистр
 
 автор: sl1p   (23.06.2011 в 14:49)   письмо автору
 
 

пРЕВЕД => Превед
т.е. верхний в нижний и наоборот.

Интересен самый простой вариант..

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

  Ответить  
 
 автор: cheops   (23.06.2011 в 15:04)   письмо автору
 
   для: sl1p   (23.06.2011 в 14:49)
 

>пока идея только пойти циклом делать strtolower каждого символа и сравнивать с
>оригинальным.
Наверное в случае русского языка это будет самым простым вариантом.

  Ответить  
 
 автор: sl1p   (23.06.2011 в 15:07)   письмо автору
 
   для: cheops   (23.06.2011 в 15:04)
 

а если латинские?

  Ответить  
 
 автор: Valick   (23.06.2011 в 15:51)   письмо автору
 
   для: sl1p   (23.06.2011 в 15:07)
 

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

  Ответить  
 
 автор: cheops   (23.06.2011 в 15:54)   письмо автору
 
   для: sl1p   (23.06.2011 в 15:07)
 

В общем без цикла тоже не обойтись, но в случае латинских символов в Интернет можно быть почти на 100% уверенным, что это будет либо ASCII либо UTF8. У обеих кодировок коды латинских символов совпадают. Причем все символы (и маленькие и большие) идут подряд в алфавитном порядке, но в разных диапазонах кода. Следовательно нужно лишь проверить диапазон символов и либо вычесть, либо прибавить разницу к коду, а потом взять символ. Т.е. работа идет с функциями ord() и chr().

  Ответить  
 
 автор: sl1p   (23.06.2011 в 17:27)   письмо автору
 
   для: cheops   (23.06.2011 в 15:54)
 

о я далек от этих штук. Всё хочу разобраться в таких делах но както руки не дойдут:)

не посоветуете чёнить почитать на такую тему?)

  Ответить  
 
 автор: cheops   (23.06.2011 в 18:07)   письмо автору
 
   для: sl1p   (23.06.2011 в 17:27)
 

Собственно по хорошему нужно знать, что каждому символу соответствует число, к этому числу можно прибавить другое число и получить другой символ.
<?php 
  $str 
"Hello World";
  for(
$i 0$i strlen($str); $i++)
  {
    echo 
$str[$i]." = ".ord($str[$i])."<br />";
  }
?>
Ваша задача для английского алфавита решается так (для русского уже простым сложением и вычитанием не обойтись, там в зависимости от кодировки могут быть разные сюрпризы в расположении элементов)
<?php
  
for($i 0$i strlen($str); $i++)
  {
    
$code ord($str[$i]);
    if(
$code >= 65 && $code <= 90)
    {
      
// Это заглавная буква - делаем её прописной
      
echo chr($code 32);
    }
    else
    {
      
// Это прописная буква - делаем её заглавной
      
echo chr($code 32);
    }
  }
?>
Все функции PHP для преобразования регистра, делают примерно тоже самое, что я написал, только на C++ и для всех кодировок, а не только для английской.

  Ответить  
 
 автор: sl1p   (24.06.2011 в 13:09)   письмо автору
 
   для: cheops   (23.06.2011 в 18:07)
 

хм, спасибо большое.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования