Случайная замена букв

Печать RSS
107

Автор
Пацак
0
Интересует вопрос как рандомно заменять символы в тексте, никак че-то не пойму принцип.
Я имею ввиду примерно такое:
допустим имеем слово "текст", надо сделать чтобы некоторые буквы заменяло на звездочки и было "текс*" потом к примеру "т*кс*" и тд
Y

Пришелец
0
функции сейчас не вспомню, а алгоритм таков:
0) создаешь пустой массив
1) берешь длину строки
2) от 0 до длины, уменьшенной на 1, делаешь рэндом
3) загоняшь в цикл от 0 до к-ва элементов массива - 1, сверяешь на совпадение. если есть, возвращаешся к 2)
4) заменяешь
5) добавляешь в массив[к-во элементов массива] вот то рендомное число

все это можно в цикл, ток массивчик сохраняй

Добавлено через 01:11 сек.
для длинных строк это не особо, там рендом пока попадет на 1 из 500 - юзер уснет, там вычурнее. если надо - пиши

2000 лет д.н.э.
0
<?
$text = 'text';
$text[mt_rand(0, mb_strlen($text, 'utf-8'))] = '*';
echo $text;
?>
использовать строку как массив пока еще ни кто не запрещал))
Изменил: ramzes (23.04.2011 / 19:33)
Автор
Пацак
0
в прнципе я немного разобрался, но не совсем... заодно задам еще один вопрос дабы не создавать новой темы:
<?
SELECT * FROM table WHERE pole = '***'
/*
здесь вместо звездочек надо вставить цифру,
тобишь как выбрать из table,
pole, в котором содержатся только цифры?
Т.к. в pole записываютя значения и числовые, и буквенные, так вот мне нужно выбрать только числовые..
*/

Добавлено через 04:27 сек.
ramzes (23 Апреля 2011 / 19:31)
<?
$text = 'text';
$text[mt_rand(0, mb_strlen($text, 'utf-8'))] = '*';
echo $text;
?>
использовать строку как массив пока еще ни кто не запрещал))
----------
Вот так корректнее работает
<?
$text = 'text'; 
$text[mt_rand(0, mb_strlen($text-1, 'utf-8'))] = '*'; 
echo $text;

но при таком раскладе заменяет только одну букву в слове
Изменил: Дмитрий (23.04.2011 / 19:34)

Землянин
0
вот мой велосипед гг:
<?php
    function _replace(&$str, &$trans)
    {
      for ($i = 0; $i < strlen($str); $i++)
        if (rand(0,1) and isset($trans[$str[$i]]))
            $str[$i] = $trans[$str[$i]];
    }
    $trans = array(
        'а' => '*',
        'б' => '*',
        'в' => '*',
        'г' => '*',
        'д' => '*',
        'е' => '*',
        'ё' => '*',
        'ж' => '*',
        'з' => '*',
        'и' => '*',
        'й' => '*',
        'к' => '*',
        'л' => '*',
        'м' => '*',
        'н' => '*',
        'о' => '*',
        'п' => '*',
        'р' => '*',
        'с' => '*',
        'т' => '*',
        'у' => '*',
        'ф' => '*',
        'х' => '*',
        'ц' => '*',
        'ч' => '*',
        'ш' => '*',
        'щ' => '*',
        'ъ' => '*',
        'ы' => '*',
        'ь' => '*',
        'э' => '*',
        'ю' => '*',
        'я' => '*',
    );
    $str = 'тут текст';
    _replace($str, $trans);
    echo $str;
?>
N

Эцилопп сией тентуры
0
FaZaHaK (28 Апреля 2011 / 23:35)
вот мой велосипед гг:
<?php
    function _replace(&$str, &$trans)
    {
      for ($i = 0; $i < strlen($str); $i++)
        if (rand(0,1) and isset($trans[$str[$i]]))
            $str[$i] = $trans[$str[$i]];
    }
    $trans = array(
        'а' => '*',
        'б' => '*',
        'в' => '*',
        'г' => '*',
        'д' => '*',
        'е' => '*',
        'ё' => '*',
        'ж' => '*',
        'з' => '*',
        'и' => '*',
        'й' => '*',
        'к' => '*',
        'л' => '*',
        'м' => '*',
        'н' => '*',
        'о' => '*',
        'п' => '*',
        'р' => '*',
        'с' => '*',
        'т' => '*',
        'у' => '*',
        'ф' => '*',
        'х' => '*',
        'ц' => '*',
        'ч' => '*',
        'ш' => '*',
        'щ' => '*',
        'ъ' => '*',
        'ы' => '*',
        'ь' => '*',
        'э' => '*',
        'ю' => '*',
        'я' => '*',
    );
    $str = 'тут текст';
    _replace($str, $trans);
    echo $str;
?>
Афигеть... Я это даже велосипедом назвать не могу...
Это мегакостыльная функция которую я видел гг

Землянин
0
7. Nu3oN, главное работает D

2000 лет д.н.э.
0
8. FaZaHaK, главное ужасно, а потом уже, работает или нет

Землянин
0
9. ramzes, напиши лучшеD

2000 лет д.н.э.
0
Чти пост #3
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск