Revision: 6793
Updated Code
at June 17, 2008 19:31 by pateketrueke
Updated Code
/** * (contexto[, busqueda[, reemplazo[, ordinal]]]) * * Resalta palabras dentro de una cadena de texto. */ function search($text, $find, $repl = '<strong>\\1</strong>', $ord = 32) { global $tags, $num; $num = 0; // contador $tags = array(); // pila $char = is_numeric($ord)? chr($ord): $ord[0]; // caracter? if (!function_exists('_search_backup_tags')) { // guardamos el HTML function _search_backup_tags($test) { global $tags, $num; // guardamos el tag completo $tags[$num] = $test[0]; $tag = "<!$num>"; $num++; // pisa y corre! return $tag; } } if (!function_exists('_search_restore_tags')) { // recuperamos el HTML function _search_restore_tags($test) { global $tags; // xD return $tags[$test[1]]; } } $text = // escapamos tags tipo HTML/BBCode preg_replace_callback('/([<\[][^>\]]+\/?[\]>])/', '_search_backup_tags', $text); // ----------------------------- Resaltamos! $found = array(); $word = // separamos en palabras? explode($char, $find); foreach ($word as $test) { // Escapamos las "wildcards" $found[] = preg_quote(strip_tags($test)); } $expr = join('|', $found); // unimos $text = // Aqui ocurre toda la magia.... preg_replace("/($expr)/is", $repl, $text); // recuperamos etiquetas HTML/BBCode $text = preg_replace_callback('/<!(\d+)>/', '_search_restore_tags', $text); return $text; }
Revision: 6792
Updated Code
at June 17, 2008 19:15 by pateketrueke
Updated Code
/** * (contexto[, busqueda[, reemplazo[, ordinal]]]) * * Resalta/Reemplaza palabras dentro de una cadena de texto. */ function search($text, $find, $repl = '<strong>\\1</strong>', $ord = 32) { global $tags, $num; $num = 0; // contador $tags = array(); // pila $char = is_numeric($ord)? chr($ord): $ord[0]; // caracter? if (!function_exists('_search_backup_tags')) { // guardamos el HTML function _search_backup_tags($test) { global $tags, $num; // guardamos el tag completo $tags[$num] = $test[0]; $tag = "<!$num>"; $num++; // pisa y corre! return $tag; } } if (!function_exists('_search_restore_tags')) { // recuperamos el HTML function _search_restore_tags($test) { global $tags; // xD return $tags[$test[1]]; } } $text = // escapamos tags tipo HTML/BBCode preg_replace_callback('/([<\[][^>\]]+\/?[\]>])/', '_search_backup_tags', $text); if (is_array($find) || is_array($repl)) { // Reemplazo habitual... $text = preg_replace($find, $repl, $text); } else { // ----------------------------- Resaltamos! $found = array(); $word = // separamos en palabras? explode($char, $find); foreach ($word as $test) { // Escapamos las "wildcards" $found[] = preg_quote(strip_tags($test)); } $expr = join('|', $found); // unimos $text = // Aqui ocurre toda la magia.... preg_replace("/($expr)/is", $repl, $text); } // recuperamos etiquetas HTML/BBCode $text = preg_replace_callback('/<!(\d+)>/', '_search_restore_tags', $text); return $text; }
Revision: 6791
Updated Code
at June 17, 2008 19:13 by pateketrueke
Updated Code
/** * (contexto[, busqueda[, reemplazo[, ordinal]]]) * * Resalta palabras dentro de una cadena de texto. */ function search($text, $find, $repl = '<strong>\\1</strong>', $ord = 32) { global $tags, $num; $num = 0; // contador $tags = array(); // pila $char = is_numeric($ord)? chr($ord): $ord[0]; // caracter? if (!function_exists('_search_backup_tags')) { // guardamos el HTML function _search_backup_tags($test) { global $tags, $num; // guardamos el tag completo $tags[$num] = $test[0]; $tag = "<!$num>"; $num++; // pisa y corre! return $tag; } } if (!function_exists('_search_restore_tags')) { // recuperamos el HTML function _search_restore_tags($test) { global $tags; // xD return $tags[$test[1]]; } } $text = // escapamos tags tipo HTML/BBCode preg_replace_callback('/([<\[][^>\]]+\/?[\]>])/', '_search_backup_tags', $text); if (is_array($find) || is_array($repl)) { // Reemplazo habitual... $text = preg_replace($find, $repl, $text); } else { // ----------------------------- Resaltamos! $found = array(); $word = // separamos en palabras? explode($char, $find); foreach ($word as $test) { // Escapamos las "wildcards" $found[] = preg_quote(strip_tags($test)); } $expr = join('|', $found); // unimos $text = // Aqui ocurre toda la magia.... preg_replace("/($expr)/is", $repl, $text); } // recuperamos etiquetas HTML/BBCode $text = preg_replace_callback('/<!(\d+)>/', '_search_restore_tags', $text); return $text; }
Revision: 6790
Updated Code
at June 17, 2008 19:12 by pateketrueke
Updated Code
/** * (contexto[, busqueda[, reemplazo[, ordinal]]]) * * Resalta palabras dentro de una cadena de texto. */ function search($text, $find, $repl = '<strong>\\1</strong>', $ord = 32) { global $tags, $num; $num = 0; // contador $tags = array(); // pila $char = is_numeric($ord)? chr($ord): $ord[0]; // caracter? if (!function_exists('_search_backup_tags')) { // guardamos el HTML function _search_backup_tags($test) { global $tags, $num; // guardamos el tag completo $tags[$num] = $test[0]; $tag = "<!$num>"; $num++; // pisa y corre! return $tag; } } if (!function_exists('_search_restore_tags')) { // recuperamos el HTML function _search_restore_tags($test) { global $tags; // xD return $tags[$test[1]]; } } $text = // escapamos tags tipo HTML/BBCode preg_replace_callback('/([<\[][^>\]]+\/?[\]>])/', '_search_backup_tags', $text); if (is_array($find) || is_array($repl)) { // Reemplazo habitual... $text = preg_replace($find, $repl, $text); } else { // ----------------------------- Resaltamos! $found = array(); $word = // separamos en palabras? explode($char, $find); foreach ($word as $test) { // Escapamos las "wildcards" $found[] = preq(strip_tags($test)); } $expr = join('|', $found); // unimos $text = // Aqui ocurre toda la magia.... preg_replace("/($expr)/is", $repl, $text); } // recuperamos etiquetas HTML/BBCode $text = preg_replace_callback('/<!(\d+)>/', '_search_restore_tags', $text); return $text; }
Revision: 6789
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 14, 2008 13:14 by pateketrueke
Initial Code
function search($text, $find, $ord = 32, $repl = '<strong>\\1</strong>') { global $tags, $num; $num = 0; // counter! $tags = array(); // stack $char = is_numeric($ord)? chr($ord): $ord[0]; // char, separator if (!function_exists('_search_backup_tags')) { // backup tags? function _search_backup_tags($test) { global $tags, $num; // saved the full tag! $tags[$num] = $test[0]; $tag = "<!$num>"; $num++; // OK return $tag; } } if (!function_exists('_search_restore_tags')) { // restore the backup function _search_restore_tags($test) { global $tags; // xD return $tags[$test[1]]; } } $text = // escape tags "expression" preg_replace_callback('/([<\[][^>\]]+\/?[\]>])/', '_search_backup_tags', $text); // ----------------------------- Search highlight! $found = array(); $word = // get the words explode($char, $find); foreach ($word as $test) { // escape "wildcards" $found[] = preg_quote(strip_tags($test)); } $expr = join('|', $found); // cool $text = // Magix happens there preg_replace("/($expr)/is", $repl, $text); // restore with the backup handler $text = preg_replace_callback('/<!(\d+)>/', '_search_restore_tags', $text); return $text; }
Initial URL
Initial Description
Initial Title
Highlight within HTML/BBCode without source breaking
Initial Tags
php, html, replace
Initial Language
PHP