Замена подстрок с помощью 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.




