ФорумПрограммированиеPHP для идиотов → Регулярки

Регулярки

  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 23 сентября 2009 г. 21:20

    Допустим у меня в тексте напечатано 15 "*", мне нужно заменить каждую звездочку разными символами. Подскажите мне какую-нибудь функцию (аналагичную ereg_replace, но которая заменяет лишь одну * в тексте а не все сразу)
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 23 сентября 2009 г. 22:12, спустя 52 минуты 8 секунд


    $string[mb_strpos($string, '*')] = $my_char;
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 23 сентября 2009 г. 22:14, спустя 1 минуту 59 секунд



    $string[mb_strpos($string, '*')] = $my_char;

    Объясни плиз
  • Dr.TRO

    Сообщения: 254 Репутация: N Группа: Адекваты

    Spritz 23 сентября 2009 г. 22:21, спустя 6 минут 38 секунд

    элементарно ватсон ! [man]str_replace[/man]
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 23 сентября 2009 г. 22:24, спустя 3 минуты 22 секунды


    элементарно ватсон ! [man]str_replace[/man]

    он просил только один символ, а str_replace, заменяет все.




    $string[mb_strpos($string, '*')] = $my_char;

    Объясни плиз


    $string - строка, в которой нужно заменить, mb_strpos($string, '*') - вернет позицию первой '*', значит мы можем использовать ее как индекс в $string.

    можно переписать так

    $starPosition = mb_strpos($string, '*');

    $string[$starPosition] = 'c';
  • Dr.TRO

    Сообщения: 254 Репутация: N Группа: Адекваты

    Spritz 23 сентября 2009 г. 22:57, спустя 33 минуты 1 секунду

    исключительно сегодня и для вас :
    <?php
    $str = '***************';
    $finded_count = substr_count($str, '*');
    for( $i = 1; $i <= $finded_count ; $i++){
    $str = preg_replace('/[\*]{1}/i', rand(0, 100) . PHP_EOL, $str, 1);
    }
    echo $str;
    ?>
    Microsoft Windows [Версия 6.0.6001]
    (C) Корпорация Майкрософт, 2006. Все права защищены.

    C:\Users\Администратор>cd ../../

    C:\>php sploit.php
    89
    65
    79
    63
    25
    98
    30
    96
    15
    70
    2
    92
    83
    66
    94

    C:\>
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 23 сентября 2009 г. 23:00, спустя 2 минуты 53 секунды

    Dr.TRO, вы читали Омара Хайяма?
  • Dr.TRO

    Сообщения: 254 Репутация: N Группа: Адекваты

    Spritz 23 сентября 2009 г. 23:03, спустя 3 минуты 4 секунды

    Да, очень люблю …
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 24 сентября 2009 г. 16:04, спустя 17 часов 24 секунды

    Спасибо всем большое, но есть еще один вопрос. Вот допустим я * меняю на пермененную в которой сдержится ", текст", как это правильно реализовать вот здесь?:
    for( $i = 1; $i <= $finded_count ; $i++){
    $a = ", йцукен";
       $str = preg_replace('/[\*]{1}/i', $a, $str, 1);
    }
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 сентября 2009 г. 16:56, спустя 51 минуту 57 секунд

    это вообще полный пиздец … /[\*]{1}/i


    масломасляное.

    вот этой штукой замени одну букву то уж .. http://ru2.php.net/manual/en/function.substr-replace.php
    Сапожник без сапог
  • Dr.TRO

    Сообщения: 254 Репутация: N Группа: Адекваты

    Spritz 24 сентября 2009 г. 17:28, спустя 32 минуты 15 секунд

    можно и так, но вот только по мойму регекспы лучше …
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 сентября 2009 г. 18:21, спустя 52 минуты 46 секунд


    можно и так, но вот только по мойму регекспы лучше …
    это по-твоему, а по-моему что быстрее - то лучше :)
    Сапожник без сапог
  • Dr.TRO

    Сообщения: 254 Репутация: N Группа: Адекваты

    Spritz 24 сентября 2009 г. 18:36, спустя 15 минут 3 секунды

    напиши свой код который быстрее … мой код который заменяет 10к * на
    md5($str) . PHP_EOL
    справляеться за 33 сек…
    Спустя 59 сек.

    Спасибо всем большое, но есть еще один вопрос. Вот допустим я * меняю на пермененную в которой сдержится ", текст", как это правильно реализовать вот здесь?:
    for( $i = 1; $i <= $finded_count ; $i++){
    $a = ", йцукен";
       $str = preg_replace('/[\*]{1}/i', $a, $str, 1);
    }


    $a = ", йцукен";
    for( $i = 1; $i <= $finded_count ; $i++){
    $str = preg_replace('/[\*]{1}/i', $a, $str, 1);
    }
    такжеж вариант выбора с массива случайных элементов не забываем ;)
  • trim

    Сообщения: 62 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2009 г. 16:27, спустя 2 дня 21 час 51 минуту

    /^[a-zA-Zа-яА-Я0-9]+$/ такая регулярка будет пахать?
  • Dr.TRO

    Сообщения: 254 Репутация: N Группа: Адекваты

    Spritz 27 сентября 2009 г. 22:24, спустя 5 часов 56 минут 26 секунд

    нет, чо за а-яА-Я ?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!