|
|
|
| Помогите пожалуйста.
Прошу прощение облазил 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 | |
|
|
|
|
|
|
|
для: 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;
?>
|
Должно работать ))) | |
|
|
|
|
|
|
|
для: 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;
?>
|
Должно работать ))) | |
|
|
|
|
|
|
|
для: 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;
| хотя вместо массива можно так-же использовать получаемую строку | |
|
|
|
|
|
|
|
для: 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 тут вроде сам разберусь. спасибо за помощь. | |
|
|
|