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

Форум PHP

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

 

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

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

тема: Помогите пожалуйста: удаление повторяющихся букв из строки.
 
 автор: Angelll   (20.10.2009 в 16:17)   письмо автору
 
 

Помогите пожалуйста.
Прошу прощение облазил 20 страниц гугла, просидел в dreamweaver 2часа и просмотрел немного тем в вашем форуме но так и не нашел подходящей темы.

дело в том что мне нужна функция которая будет принимать $str и возвращать тотже самый $str только уже "отфильтрованный, без повторных букв".

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

<?
$str 
'abcdeinmn';   // как видите тут два раза  "n"

for ( $a 0$a strlen($str); $a++)
{    
    for ( 
$c2 $a$c2 strlen($str); $c2++)
        {
        if ( 
$c2 != $a and strcmp($str[$c2], $str[$a]) == 0)
            {
            echo 
"a= ".$a."c2= ".$c2."<br>";
            echo 
"string= ".$str[$c2]; 
            }
        }
}

?>

в этом коде выводится только буква которая повторяется.

а мне нужен код который вернет целую строку, без повторяющихся букв.
например:

$str = 'abcdeinmn';
funkcija_udalenija_povtornoi_bukvi($str);
echo $str; // и должно быть так: abcdeinm

проблема в том что я не знаю как изменить старое слово , сделав его "новым".

P.S.
в строке возможны только буквы от A-Z.
в строке может быть несколько подряд повторяющихся букв. например abcdeinmmz
пример2:
abcdacbmnde - после функции должна стать: abcdmne

  Ответить  
 
 автор: Rolex   (20.10.2009 в 16:53)   письмо автору
 
   для: Angelll   (20.10.2009 в 16:17)
 

Здравствуйте! )))

<?php
$str 
'abcdeinmn';   // как видите тут два раза  "n" 

for ( $a 0$a strlen($str); $a++) 
{     
    for ( 
$c2 $a$c2 strlen($str); $c2++) 
        {
         if(
$a=$c2)
                {
                        
$new_str.=$a;
                }
         
        }
}
echo 
"Строка без повторов ---> " $new_str;
?>



Должно работать )))

  Ответить  
 
 автор: Rolex   (20.10.2009 в 16:53)   письмо автору
 
   для: Angelll   (20.10.2009 в 16:17)
 

Здравствуйте! )))

<?php
$str 
'abcdeinmn';   // как видите тут два раза  "n" 

for ( $a 0$a strlen($str); $a++) 
{     
    for ( 
$c2 $a$c2 strlen($str); $c2++) 
        {
         if(
$a==$c2 and strcmp($str[$c2], $str[$a]) == 0)
                {
                        
$new_str.=$a;
                }
         
        }
}
echo 
"Строка без повторов ---> " $new_str;
?>



Должно работать )))

  Ответить  
 
 автор: heed   (20.10.2009 в 17:22)   письмо автору
 
   для: Angelll   (20.10.2009 в 16:17)
 

можно обойтись одним циклом и массивом например
<?
$str 
'abcdeinmn';   // как видите тут два раза  "n" 
$outstr '';    // выходная строка
$tmp = array();    // массив входящих символов

for ( $a 0$a strlen($str); $a++) 
{     
if (
in_array($str{$a}, $tmp)) continue;
else 
$outstr .= ($tmp[] = $str{$a});
}
echo  
'result=' $outstr;
хотя вместо массива можно так-же использовать получаемую строку

  Ответить  
 
 автор: Angelll   (20.10.2009 в 17:58)   письмо автору
 
   для: heed   (20.10.2009 в 17:22)
 

heed -> спасибо помогло, прям выручил.


Rolex->неполучилось.

еще один вопросик.. вот я изменил код. но теперь мне нужно чтобы происходила проверка если слово состоит больше чем 3буквы( strlen($str) > 3) чтобы удалялась если есть буква "z".


<?
$str 
'abcedzz';   // как видите тут два раза  "n" 
$str2 'ccafmn';

function 
del_double$string )
{
    
$outstr1 '';    // выходная строка
    
$tmp = array();    // массив входящих символов
    
$tmp2 = array ();
    for ( 
$a 0$a strlen($string); $a++) 
    {     
        if (
in_array($string{$a}, $tmp)) continue;
        else 
$outstr1 .= ($tmp[] = $string{$a});
    }
    return 
$outstr1;
}
function 
searchWord($Searchtext$String)
{
    
$outstr2 '';
    for (
$i 0$i strlen($Searchtext); $i++)
    {
        if (
strcmp($Searchtext[$i], $String) == 0) continue;
        else 
$outstr2 .= $Searchtext[$i];
    }
    return 
$outstr2;
}
echo 
searchWord(del_double($str.$str2), "z");
?>


в этом коде осталось как-то сделать чтобы функция searchWord выполнялась если strlen > 3 тут вроде сам разберусь. спасибо за помощь.

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

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