[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена смаилов
Ramzil_Nixon
Решил написать скрипт для загрузки новых смаилов для сайта прямо через админ панель. загрузку написал. но появилась проблема замены символов на картинки смаилов. раньше для смаилов использовал два массива. на одном находился ссылка на файл. в другом символ для замены. тогда приходилось все в ручную делать. файл загружать через фтп. а ссылку и символ прописать в массив.
теперь после загрузки ссылка и символы записываются в бд. но понятия не имею как заменить символы на ссылки. есть ли другой способ замены без массивов?



Спустя 46 минут, 40 секунд (19.03.2012 - 14:57) Ramzil_Nixon написал(а):
Никто не может помочь?

Спустя 9 минут, 41 секунда (19.03.2012 - 15:07) Visman написал(а):
А какой другой способ может быть?
Два массива, в одном коды смайлов (которые в тексте), в другом html код картинок смайлов.
Потом заменой первого массива на второй и все.

Спустя 6 минут (19.03.2012 - 15:13) Ramzil_Nixon написал(а):
Visman, пробовал такой способ:

$Qu = mysql_query("SELECT * FROM `Smiles`") or die(mysql_error());
$smiles = array( while($U = mysql_fetch_assoc($Qu)){'<img src="'.$U['url'].'" class="icon">'});


Получается я просто не делаю правильный вывод?

Спустя 5 минут, 40 секунд (19.03.2012 - 15:19) Visman написал(а):
$smiles точно содержит массив картинок? Что-то меня запись эта с тольку сбивает.

Спустя 1 минута, 38 секунд (19.03.2012 - 15:20) vinnie написал(а):
print_r($smiles) что ретурнит позырь)

Спустя 1 минута, 51 секунда (19.03.2012 - 15:22) Ramzil_Nixon написал(а):
Visman
Цитата (Visman @ 19.03.2012 - 12:19)
$smiles точно содержит массив картинок?


Да это массив картинок. Есть еще массив символов $html.


Цитата (vinnie @ 19.03.2012 - 12:20)
print_r($smiles) что ретурнит позырь)

Насчет этого я не подумал smile.gif

Спустя 4 минуты, 24 секунды (19.03.2012 - 15:27) Visman написал(а):
Если и $smiles, и $html массивы и соответствуют друг друго, то заменяем
$text = str_replace($html, $smiles, $text);

Спустя 4 минуты, 57 секунд (19.03.2012 - 15:32) Ramzil_Nixon написал(а):
Visman, Вот именно они не соответствуют. Вот это и хотел выяснить, как правильно и последовательно кинуть в массив из БД

Спустя 2 минуты, 18 секунд (19.03.2012 - 15:34) Visman написал(а):
Если в бд, то два столбца.
Текст смайлов и html картинок.
Строй одновременно в цикле два массива, тогда они будут при замене совпадать.

Спустя 1 минута, 30 секунд (19.03.2012 - 15:35) Visman написал(а):
Можно вообще одним :D
<?php
$smilies = array(
':)' => 'smile.png',
'=)' => 'smile.png',
':|' => 'neutral.png',
'=|' => 'neutral.png',
':(' => 'sad.png',
'=(' => 'sad.png',
':D' => 'big_smile.png',
'=D' => 'big_smile.png',
':o' => 'yikes.png',
':O' => 'yikes.png',
';)' => 'wink.png',
':/' => 'hmm.png',
':P' => 'tongue.png',
':p' => 'tongue.png',
':lol:' => 'lol.png',
':mad:' => 'mad.png',
':rolleyes:' => 'roll.png',
':cool:' => 'cool.png',
);

?>

Такой кэш файлик, чтобы бд зря не гонять.

Спустя 6 минут, 35 секунд (19.03.2012 - 15:42) Ramzil_Nixon написал(а):
Цитата (Visman @ 19.03.2012 - 12:35)
Можно вообще одним biggrin.gif

Вот с многомерным массивом вариант.
А в таком случае как будет str_replace();?

Спустя 5 минут, 41 секунда (19.03.2012 - 15:48) Visman написал(а):
$text = str_replace(array_keys($smiles), array_values($smiles), $text);

Спустя 21 минута, 26 секунд (19.03.2012 - 16:09) Ramzil_Nixon написал(а):
Цитата (Visman @ 19.03.2012 - 12:48)
$text = str_replace(array_keys($smiles), array_values($smiles), $text);


Что-то не хочет работать:

$RE = '';
$qu = mysql_query("SELECT * FROM `smiles`") or die(mysql_error());
while($Q = mysql_fetch_assoc($qu))
{
$RE .= $Q['url'].' => '.$Q['like'];
}
$Am = array($RE);
echo str_replace(array_keys($Am), array_values($Am), ':-)');

Спустя 5 минут, 51 секунда (19.03.2012 - 16:15) Visman написал(а):
$Am = array();
$qu = mysql_query("SELECT * FROM `smiles`") or die(mysql_error());
while($Q = mysql_fetch_assoc($qu))
{
$Am[$Q['like']] = $Q['url'];
}
echo str_replace(array_keys($Am), array_values($Am), ':-)');


Тут
    $Am[$Q['like']] = $Q['url'];

я думаю, что 'like' - это код смайла в тексте? а 'url' это картинка?

Спустя 6 минут, 44 секунды (19.03.2012 - 16:22) Ramzil_Nixon написал(а):
Цитата (Visman @ 19.03.2012 - 13:15)
я думаю, что 'like' - это код смайла в тексте? а 'url' это картинка?


Все правильно. Все, заработало. Держи +


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

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