Есть ли в php функция инкремента текста? Например: 1. инкремент('aa') выведет "ab" 2. инкремент('ab') выведет "ac" 3. инкремент('az') выведет "ba" 4. инкремент('zz') выведет "aaa" 5. инкремент('a1') выведет "a2" И тому подобное?
Не совсем то. Она инкременирует символы по позициям и только в том диапазоне, в котором символ находится. т.е. инкрементируя строку "ааа" никогда не получишь строку "999" или "FFF"
Что не то? Я не говорил что это то Встроенной возможности я не знаю.Знаю только то что я привел.А дальше тебе надо думать и писать.
Наверно извращенный способ, но на первый взгляд работает: Код (PHP): <?php $text = "0123456789"; $code = "199"; function inct($str, $value) { $key = substr($value, -1); $newValue = substr($value, 0, -1); $valuePos = strpos($str, $key); if (($newKey = substr($str, $valuePos + 1, 1)) == false) { $newKey = $str[0]; $newValue = inct($str, substr($value, 0, -1)); } return $newValue.$newKey; } echo inct($text, $code); ?> Смысл такой, есть шкала символов $text согласно ей я пытаюсь инкрементировать слово $code. Беру последний символ слова, смотрю его позицию в тексте, беру следующий по счету символ и меняю его в слове. Если символов больше нет, беру начальный символ, и снова вызываю эту функцию. как так. Помогите придумать способ потестировать его? Может можно как-то упростить?
спакуха. есть считалка чисел в разных системах счисления. http://php.ru/manual/function.base-convert.html вперёд
Опять мне не подходит или я не до конца разобрался в ней. Может если я объясню для чего мне это, станет понятнее Нужно генерировать уникальную строку, чем короче тем лучше. Рассматривал варианты: Вариант 1. Выбрать строку размером 5 символов, генерить, проверить есть ли в базе, если что сгенерить заново (длина достаточна, что бы не приходилось повторно генерить слишком часто) Вариант 2. Взять короткую строку 2-3 символа. И следить за базой в ручную. Как только наберется определенное количество строк, увеличить длину строки на один. Вариант 3. То что я и попытался сделать. Задал список возможных символов "0123456789bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ". Наверно можно сказать создал свою системой счисления И просто увеличиваю строку на один порядок. хз, как это решают нормальные люди, но вариант вроде работает, протестировал как мог.
не, я не к тому что "чего или ничего". просто обычно такие подходы рождаются от незнания, и это из серии изобретения велосипедов. ты зачем хотел считать эти буковки? может есть способ проще. ты расскажи.
сокращатель ссылок делаю, нужны короткие слова, но как то они все будут заняты, увеличить длину на один символ и т.д.
ты уже определись что тебе надо. сделать из "199" сделает текст "200" несложно, это цифры, хоть и в строке Код (PHP): echo (string)(1+'199'); Другое дело инкремент для строки типа "abc'. но и тут php не подведет. он такое поддерживает. это делается не абы как, а по вполне конкретному алгоритму. вуаля: Код (PHP): $s = 'a'; foreach(range(0,1000) as $v) { $s++; echo $s.'<br />'; } а если говорить о Начальной задаче - формировании коротких ссылок. то делается это по разному, иногда так: Код (PHP): // конвертируем десятичное число в 62-ричное function base10to62($in) { $a = array_merge( range(0, 9), range('a', 'z'), range('A', 'Z') ); $base = sizeof($a); $h = ''; while($in>=$base) { $d1 = floor($in/$base); $ost = $in-$d1*$base; $in = $d1; $h .= $a[$ost]; } return strrev($h.$a[$in]); } echo base10to62(65455); // h1J тоесть ссылки просто хранятся в БД и каждая имеет свой автоинкрементальное десятичное число, а для каждого из них мы всегда можем получить короткий код, в 62-ричной системе счисления, можем комбинацию их и т.д.
C первым понятно, не то имел ввиду, цифры складывать умею Второй вариант не подходит, причину я написал во втором сообщении темы. если коротко, то нельзя задать диапазон, строка растет раньше чем использует большие буквы и цифры. Третий вариант похож на то что мне надо, но что там происходит понятия не имею, так глубоко php не знаю
Гугл сговорчивей тебя Не отказался бы В интернете много бесплатных ресурсов предоставляющих подобную услугу. На чем ты собираешься деньги делать не понимаю.
будущий милиардер детектед. на кор.ссылках поднимется. а дальше уже гостевыми книгами ворочать начнет. там уже другие масштабы...