[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена текста картинкой
DmitryOpalev
Здравствуйте.
У меня есть картинки 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] он будет обрабатывать еще и [хрен с пирожком] biggrin.gif

Спустя 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 по правилу выше. Не забуть только экранизировать нужные символы.

Спустя 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);


_____________
Курс валют
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.