Замена подстрок с помощью JavaScript v.2

Не string’ом единым…

Пересмотрел я скрипт написаный мною в прошлой статье и теперь с некоторыми изменениями выкладываю вновь.

Теперь в качестве поиска используется регулярное выражение игнорирующее вхождения подстроки между символами тэга (“<" и ">“), что означает что замена не будет применяться к самим тэгам.

Кроме этого к объекту поиска добавил флаг (параметр ‘flag’), который может быть равен “i” – игнорировать регистр. Это в рамках правил регулярных выражений. Логично что вы не будуте использовать параметр “i” если вам нужно поменять регистр у букв. Отмечу так же, что в поиске не используется флаг “g”. Глобальный поиск реализован с помощью цикла (см. цикл while).

Код


symbols = new Array();
symbols[1] = { 'search' : 'k', 'replace' : 'K', 'flag' : '' }
symbols[2] = { 'search' : 'br', 'replace' : 'hr', 'flag' : 'i' }
symbols[3] = { 'search' : 'block', 'replace' : 'inline', 'flag' : 'i' }


function sym_Replace()
{
for (sym in symbols)
{
expr = new Array()
expr = "([^(<.*?)]*)(" + symbols[sym]['search'] + ")([^(.*?>)]*)"
srch = new RegExp(expr, symbols[sym]['flag'])
replace = "$1" + symbols[sym]['replace'] + "$3";
block = document.getElementsByTagName("p")
for (i=0; i<block.length; i++)
{
text = block[i].innerHTML
while(srch.test(text)){
text = text.replace(srch, replace);
}
block[i].innerHTML = text
}
}
}

Запускается функция как обычно:

<body onload="sym_Replace()">
Прошу, кто может, сделайте дебаг.

Плагин для Wordpress?

Не думаю, что этот небольшой скриптик нужно оформлять как плагин для Wordpress. На самом деле, в репозитории Wordpress’a уже есть плагины выполняющие замену в тексте и постов и комментариев на уровне php.

Дата: 06.09.2007
»
Категории: JavaScript
Google     

Напишите комментарий