У меня есть картинки 001.gif,002.gif... 099.gif
В форме, если нажать на смайлик, появляется соответствующее число в квадратных скобках:
[001],[002],[003] и т.д.
И теперь вопрос - как заменить [001] на <img src='/images/001.gif'>, не используя лишних массивов?
Спустя 17 минут, 39 секунд (3.06.2011 - 22:42) inpost написал(а):
str_replace,
Спустя 40 минут, 52 секунды (3.06.2011 - 23:23) DmitryOpalev написал(а):
Хм
Не представляю себе этого.
Если мы найдем значение в квадратных скобках, как нам сразу его подставить во второй аргумент?
Не представляю себе этого.
Если мы найдем значение в квадратных скобках, как нам сразу его подставить во второй аргумент?
Спустя 25 минут (3.06.2011 - 23:48) neadekvat написал(а):
$arr_smiles = array('[001]', '[002]', ...);
$arr_pics = array('001.gif', '002.gif');
str_replace($arr_smiles, $arr_pics);
Это подсказка к тому, что массив возможных смайлов по-любому нужен. Проще не заморачиваться с 001 и иже подобным и использовать всем понятные :), ;), ^__^ и т.д.
Спустя 2 минуты, 32 секунды (3.06.2011 - 23:50) Snus написал(а):
Можно еще регулярками, но только помимо твоих [001] он будет обрабатывать еще и [хрен с пирожком]

Спустя 6 минут, 9 секунд (3.06.2011 - 23:56) DmitryOpalev написал(а):
neadekvat
Цитата |
Проще не заморачиваться с 001 и иже подобным и использовать всем понятные |
Я б так и сделал, но их 100 штук.
Если это единственный верный способ, то я сделаю массивы
Спустя 2 минуты, 37 секунд (3.06.2011 - 23:59) inpost написал(а):
DmitryOpalev
Обычно вид какой-нибудь такой:
[img=001]
А далее регуляркой преобразовываешь вид
[img=(.*?)] - получаешь ссылку, можешь через file_exists проверить на существование, а полученный результат из скобок, а это и есть как раз 001 - записать в тег img.
Если уж без всяких проверок, то сразу preg_replace по правилу выше. Не забуть только экранизировать нужные символы.
Обычно вид какой-нибудь такой:
[img=001]
А далее регуляркой преобразовываешь вид
[img=(.*?)] - получаешь ссылку, можешь через file_exists проверить на существование, а полученный результат из скобок, а это и есть как раз 001 - записать в тег img.
Если уж без всяких проверок, то сразу preg_replace по правилу выше. Не забуть только экранизировать нужные символы.
Спустя 1 минута, 21 секунда (4.06.2011 - 00:00) neadekvat написал(а):
Цитата (DmitryOpalev @ 4.06.2011 - 00:56) |
Я б так и сделал, но их 100 штук. Если это единственный верный способ, то я сделаю массивы |
Я же говорю: ряд существующих смайлов по-любому придется писать ручками. Безопасности ради.
inpost, сложновато для простого смайлика =\
Спустя 2 минуты, 28 секунд (4.06.2011 - 00:03) inpost написал(а):
neadekvat
Маленькие простые регулярки легко находятся, скорость падать не будет, зато всё очевидно.
Маленькие простые регулярки легко находятся, скорость падать не будет, зато всё очевидно.
Спустя 40 секунд (4.06.2011 - 00:03) Snus написал(а):
Так ты автоматизируй процесс :)
Цитата |
Я б так и сделал, но их 100 штук. Если это единственный верный способ, то я сделаю массивы |
$files = scandir('./smiles/');
foreach($files as $file){
if(is_file($file) && $file != '.' && $file != '..'){
list($name, $ext) = explode('.', $file);
$arr1[] = '['.$name.']';
$arr2[] = $file;
}
}
...
echo str_replace($arr, $arr2, $string);
Писал сходу, дорабатывай сам, я дал пищу для размышления.
Спустя 17 часов, 51 минута, 18 секунд (4.06.2011 - 17:55) Revan написал(а):
Может лучше всего сделать так?
$string = "Проверка смайлов [1]!";
$smiles = preg_replace("/\[([0-9]{1,4})\]/", '<img src="/images/$1.png" />', $string);
_____________
Курс валют