Есть ли в JavaScript эквивалент preg_replace_callback из PHP?
У меня есть PHP-функция, которая выполняется внутри add_meta_box() в редакторе контента WP (см. ниже), и я хочу преобразовать её в JavaScript, чтобы она выполнялась по клику кнопки (по запросу, а не автоматически при загрузке) и преобразовывала содержимое поста в реальном времени (без отправки на сервер).
Есть ли эквивалентный метод в JavaScript?
add_meta_box('mycontentfilter', __('Мой фильтр контента'), 'my_content_filter', 'post', 'side', 'high');
function my_content_filter()
{
global $post;
$mykeyword = 'найди эту фразу';
$post->post_content = preg_replace_callback("/\b($mykeyword)\b/","doReplace", $post->post_content);
}
// callback-функция
function doReplace($matches)
{
static $count = 0;
switch($count++)
{
case 0: return '<b>'.$matches[1].'</b>'; // 1-е вхождение - обернуть в жирный
case 1: return '<em>'.$matches[1].'</em>'; // 2-е вхождение - обернуть в курсив
case 2: return '<u>'.$matches[1].'</u>'; // 3-е вхождение - подчеркнуть
default: return $matches[1]; // остальные не изменять
}
}

Привет, @Scott B:
Это скорее вопрос для StackOverflow, чем для WordPress Answers. Я попробую помочь, но если это не то, что вам нужно, я бы рекомендовал удалить ваш вопрос здесь и задать его на SO.
Функция Replace()
в JavaScript может принимать функцию в качестве аргумента. Бен Нейдел (который, по моему мнению, настоящая рок-звезда в jQuery/JavaScript) написал отличную статью о том, как использовать Replace()
с callback-функцией (ищите подзаголовок "Javascript String Replace() - Function Replace"):
