[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вставка текста вне тэгов
mcfly
Возможно, что эту тему уже кто-то подымал на форуме, но я, к сожалению, не нашел ничего вразумительного

Задача: Все текстовые смайлики smile.gif в хтмл-тексте заменить на тэг:
HTML
<img src='smile.gif'>



К примеру есть переменная с html-кодом:
PHP
$htmlCodeText = "текст <a href='#'>текст</a> Прикольно smile.gif <br> ыыыыыыы smile.gif <hr>";


Заранее благодарен



Спустя 1 час, 10 минут, 50 секунд (23.07.2009 - 10:18) Nikitian написал(а):
Как вариант не самый изящный, но самый простой для понимания и безопасный, сделать так:
PHP
$str='Текст со смайлами :]';
$smiles=array(
':]'=>'smile1.gif',
':['=>'smile2.gif',
':|'=>'smile3.gif'
);
foreach(
$smiles as $smile=>$img)$str=str_replace($smile,'<img src="'.$img.'" />',$str);
echo
$str;

Спустя 31 секунда (23.07.2009 - 10:19) mcfly написал(а):
Я пока додумался до

PHP
$htmlCodeText "текст <a href='#'>текст</a> Прикольно :) <br> ыыыыыыы :)<hr>";
$img "<img src='smile.gif'>";
$smileText 'smile.gif';

//Вставляем смайлики вне тэгов
$pattern '(>|^[^<]*)'.$smileText;
$replacement "\\1$img";
$htmlCodeText eregi_replace($pattern$replacement$htmlCodeText);

echo 
htmlCodeText;


Но не хочет работать sad.gif

Спустя 5 минут, 46 секунд (23.07.2009 - 10:25) mcfly написал(а):
Цитата (Nikitian @ 23.07.2009 - 07:18)
Как вариант не самый изящный, но самый простой для понимания и безопасный, сделать так:
PHP
$str='Текст со смайлами :]';
$smiles=array(
':]'=>'smile1.gif',
':['=>'smile2.gif',
':|'=>'smile3.gif'
);
foreach(
$smiles as $smile=>$img)$str=str_replace($smile,'<img src="'.$img.'" />',$str);
echo
$str;

Вначале у меня тоже это работало на str_replace. Но эта функция ставит тег с картинкой в другие теги. Например в хтмл-тексте

HTML
<span style="color: rgb(128, 128, 128);">text</span>


В стиле имеется последовательность символов: цифра восемь и закрывающаяся круглая скобка. А это тоже может быть смайликом и ваш скрипт его туда вставит

Спустя 4 часа, 13 минут, 11 секунд (23.07.2009 - 14:38) isergi написал(а):
Как решение можно поставить в реплайс условие на текст, кторый находится между "<" и ">".

Т.е. если текст находиться между скоблками, что является тэгом, например <вот этот текст оставить в покое> то его не трогать, всё остальное реплесить на смайлики.

Спустя 18 минут, 40 секунд (23.07.2009 - 14:56) mcfly написал(а):
Странно. У всех функция eregi_replace изменяет только первое попавшееся вхождение или мне так повезло? smile.gif))

У меня заработало вот как:

PHP
$htmlCodeText "текст <a href='#'>текст</a> Прикольно :) <br> ыыыыыыы :)<hr>";
$img "<img src='smile.gif'>";
$smileText 'smile.gif';

//Вставляем смайлики вне тэгов
$pattern '(>|^[^<]*)'.$smileText;
$replacement "\\1$img";
for(; 
eregi($pattern$htmlCodeText); )
  
$htmlCodeText eregi_replace($pattern$replacement$htmlCodeText);

echo 
htmlCodeText;

Спустя 1 минута, 21 секунда (23.07.2009 - 14:58) mcfly написал(а):
Цитата (isergi @ 23.07.2009 - 11:38)
Как решение можно поставить в реплайс условие на текст, кторый находится между "<" и ">".

Т.е. если текст находиться между скоблками, что является тэгом, например <вот этот текст оставить в покое> то его не трогать, всё остальное реплесить на смайлики.

Текст внутри треугольных кавычек не трогаем

Спустя 1 час, 4 минуты, 16 секунд (23.07.2009 - 16:02) isergi написал(а):
Ну да, я как раз про это и говорил.
Отлично. Надо взять на заметку это решение smile.gif Думаю когда нибудь пригодиться. wink.gif

Спустя 33 минуты, 11 секунд (23.07.2009 - 16:35) mcfly написал(а):
cool.gif
Быстрый ответ:

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