00m.Ru
21Ноя/122

Regex в Yahoo Pipes примеры

Чтобы конвертировать обычный тизерный rss в полнотекстовый, я выбрал бесплатный сервис yahoo pipes. В нем есть возможность чистить содержание item.description с помощью regex-правил. Перечислю некоторые из них, которые реально работали (может быть, они и не совершенны, но зато работают).

1. вытащить из тега ссылки только содержание атрибута href, нужно для item.link

(.*)href=\"(.*?)\"(.*) заменить на  $2

2. вытащить содержимое внутри тега A

(.*)\>(.*?)</a> заменить на  $2, нужно для item.title

3. Удалить содержимое (текстовое, для тегов не действует) внутри конкретного тега вместе с тегом

<p.*?>(.*?)</p>

4. Удалить конкретный тег

<p.*?>

5. Удалить содержимое внутри тега конкретного класса вместе с тегом

<p[^>]*>(.*?)</p>

6. Удалить тег img

<img.*?/>

7. Удалить атрибут из тега

<p> заменить на <p>

8. Заменить непечатный символ печатным
[\x92] на  &rsquo; (апостроф)

9. Замена тегов одного типа на теги другого типа

<h2>(.*?)</h2> на <p>$1</p>

10. Очистить тег от атрибутов

<div [^>]*> на <div>

11. Убрать перевод строки

[\n]

12. Убрать пробел

[\s]

13. Убить все атрибуты в рисунке, кроме ссылки и назначить класс

<img.*? src="(.*?)".*?> на <img src="$1">

14. Удалить вопросительный знак из ссылки

[\\?]

15. превратить 19.10.11 2011.10.19

(\d+)\.(\d+)\.(\d+) в 20$3.$2.$1

16.удалить все в круглых скобках вместе со скобками

\(([^)]*)\)

 

29Окт/120

Listbingo криво обрезает текст

В последних версиях отличного компонента для Joomla мною замечен весьма неприятный баг. Если вывести список объявлений с лимитом текста например в сто символов, то в месте обрезки текста появляется символ "ВОПРОСА" очень неприятно. Было потеряно двадцать минут моего времени на поиски и исправление бага. Гугломашина результатов не принесла. Пришлось все делать самому. После недолгих поисков была найдена функция обрезания текста "trunchtml" примерно 714 строка в файле libraries/gobingoo/helper/string.php. Для фикса нашего бага нам необходимо изменить функчию substr на mb_substr  в строке:

#Было
$truncate .= substr($line_matchings[2], 0, $left+$entities_length);

#Стало
$truncate .= mb_substr($line_matchings[2], 0, $left+$entities_length);

Чистим через админку кэш (если включен) и вуаля 🙂