TinyMCE не меняет цвет ссылок — Вынести HTML тэги наружу

Когда-нибудь подучу русский, чтобы генерировать нормальные заголовки 🙂

 

Бывают такие ситуации: нужно вынести теги изнутри наружу например в ситуации:

1
<span style="color: red;"><a href="#">Link</a></span>


А ситуация такая возникает в определенных версиях TinyMCE, и возможно даже только в Firefox (судя по описанию бага), когда мы в неправильном порядке пытаемся сделать цветную ссылку
То есть раньше надо было(до исправления бага):
1 Написать слово
2 Раскрасить слово
3 Выделить слово
4 Сделать ссылкой

а если делать

1 Написать слово
2 Выделить слово
3 Сделать ссылку
4 Раскрасить ссылку

то <span> встает за тег <a> и стиль не действует.

Разумно пользоваться способом один, но не всем это понятно, потому надо решать проблему. В новой же версии (к сожалению не знаю, с какой версии баг исправлен, но в 3.4.2 такого бага уже точно нет, а комменты на багтраке о том, что бага нет датируются концом марта 2011) баг исправлен.

Когда мне приходилось решать это, то баг вроде не был пофиксен или же обновлять редактор было трудней, чем применить регулярку ко всему сохраняемому тексту (да, да я плохой и делаю я неправильно) 🙂

Суть

1
2
3
4
5
6
7
8
9
10
11
$value = '<span style="color: red;"><a href="#">Link</a></span>';
 
preg_match('~<span[^>]*>(<a[^>]*>)([^>]*)(</a>)</span>~i', $value, $a);
 
 preg_match('~(<span[^>]*>)<a[^>]*>[^>]*</a>(</span>)~i', $value, $span);
 
$old_link = $a[0];
 
$new_link = $a[1].$span[1].$a[2].$span[2].$a[3];
 
$value = str_replace($old_link,$new_link,$value);

Весьма корявая регулярка, но есть одно преимущество — она работает 🙂
Регулряка очень узкоспециализированная, но с поставленной задачей справляется.
Вообще не сомневаюсь, что есть более элегантные решения с помощью каких-нибудь библиотек-парсеров, но когда проблему надо решать, то в бой идут все средства, а разбираться как было лучше зачастую приходится уже потом.

Random Posts

  • BitrixVM настройка отправки почты gmail

    Путем долгих проб и ошибок подобрал конфигурацию.

  • Zookepeer Battle Android

    Превосходная игра под Android, в которую можно играть довольно долго, так как она довольно сильно затягивает.

  • Самый простой jQuery rollover

    Итак, 2011-08-22 стартуют поиски самого простого jQuery ролловера. материал будет меняться Что такое Rollover? Это когда наводишь на изображение, и […]

  • Как посчитать сумму в Excel

    Excel предлагает очень много возможностей для работы с данными. В нем можно проводить безумное количество вычислений без особого труда. В […]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*