¿JavaScript tiene un equivalente a preg_replace_callback de PHP?

29 oct 2010, 04:57:16
Vistas: 671
Votos: 3

Tengo una función en php que se ejecuta dentro de un add_meta_box() en el editor de contenido de WP (ver abajo) que me gustaría convertir a javascript para que se ejecute al hacer clic en un botón (bajo demanda vs automático al cargar) y convierta el contenido del post en tiempo real (sin enviar al servidor).

¿Existe un método equivalente en javascript?

add_meta_box('mycontentfilter', __('Mi Filtro de Contenido'), 'my_content_filter', 'post', 'side', 'high');

function my_content_filter()
{
    global $post;
    $mykeyword = 'encuentra esta frase';
    $post->post_content = preg_replace_callback("/\b($mykeyword)\b/","doReplace", $post->post_content);
}

// la función de callback
function doReplace($matches)
{
    static $count = 0;
    switch($count++) 
    {
        case 0: return '<b>'.$matches[1].'</b>';   // 1ra instancia, envolver en negrita
        case 1: return '<em>'.$matches[1].'</em>'; // 2da instancia, envolver en cursiva
        case 2: return '<u>'.$matches[1].'</u>'; // 3ra instancia, envolver en subrayado
        default: return $matches[1];              // no cambiar las demás.
    }
}
1
Comentarios

Nada personal, pero voté para cerrar porque esto realmente está relacionado con Javascript en general, no con WordPress. Stack Overflow tiene muchas preguntas sobre este tema. Si no estás de acuerdo, únete a la discusión en Meta!

Jan Fabry Jan Fabry
29 oct 2010 15:07:28
Todas las respuestas a la pregunta 1
1

Hola @Scott B:

Esto es más bien una pregunta para StackOverflow que para WordPress Answers. Intentaré ayudarte, pero si no es lo que necesitas, te sugiero que elimines tu pregunta aquí y la publiques en SO.

La función Replace() en Javascript puede aceptar una función como argumento. Ben Nadel (quien es un auténtico rockstar de jQuery/Javascript, al menos en mi opinión) tiene un gran artículo que explica cómo usar Replace() con un callback (busca el subtítulo "Javascript String Replace() - Reemplazo con Función"):

29 oct 2010 13:48:56
Comentarios

Ejemplo: "how now, brown cow".replace(/(o)(.)/g, function(match, first, next){ return first + next.toUpperCase(); }); // devuelve "hoW noW, broWn coW"

User User
29 oct 2010 16:10:25