elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 61
51  Programación / PHP / Reemplazar palabras individuales que contienen un punto decimal - Función Regx php en: 25 Noviembre 2021, 11:34 am
Hola,
estoy usando expresiones regulares para buscar palabras individuales y las reemplazar por otra.

Tengo esta función que funciona bien siempre y cuando la palabra que queramos reemplazar no tengo un punto decimal al final.

Código:
	// Busca una palabra completa y la sustituye por otra
// insensible minusculas y mayúsculas
// https://stackoverflow.com/questions/19317493/php-preg-replace-case-insensitive-match-with-case-sensitive-replacement
function preg_ireplace($data, $search, $replace) {
$data = preg_replace_callback('/\b'.$search.'\b/i', function($matches) use ($replace)
{
   $i=0;
   return join('', array_map(function($char) use ($matches, &$i)
   {
      //return ctype_lower($matches[0][$i++])?strtolower($char):strtoupper($char);
      return $char;
   }, str_split($replace)));
}, $data);
return $data;
}


mi código es
Código:
$cadena = 'p.e. castellano g. marig ab pul. 1a';
$text = Tools::preg_ireplace($cadena, 'P.E.', 'HOLA');
$text = Tools::preg_ireplace($cadena, 'casteLLano', '***');
echo '<br>'.$cadena;
echo '<br>'.$text;

El resultado :
p.e. castellano g. marig ab pul. 1a
p.e. *** g. marig ab pul. 1a

Quiero que la palabra P.E. la interprete como palabra individual y no lo hace.
¿Alguien se le ocurre como hago que acepte el punto decimal?
Muchas gracias



52  Programación / Bases de Datos / Re: Contar palabras Mysql en: 24 Noviembre 2021, 10:38 am
Muchasss gracias.
Funciona!!  ;-) ;-) ;-)
53  Programación / Bases de Datos / Contar palabras Mysql en: 23 Noviembre 2021, 11:51 am
con la instrucción siguiente podemos contar el número de caracteres
Código:
SELECT CHAR_LENGTH('test string');
¿hay alguna forma de contar palabras?  (en el ejemplo anterior sería 2 palabras)?
Lo puedo hacer por PHP con str_word_count pero quería saber si por MYSQL me puede facilitar la cosa.
Gracias
54  Programación / Desarrollo Web / Re: Hacer una busqueda de palabra completa en mysql en: 3 Noviembre 2021, 18:07 pm
Entonces no puedes usar: [[:<:]] ni [[:>:]], porque esos caracteres consideran PATATA-FRITA como dos palabras. Podrías usar:

Código
  1. "(^|[[:blank:]]+)DEC\\.([[:blank:]]+|$)"

PERFECTOOOO FUNCIONA.
MUCHAS GRACIASSSSS
 ;-) ;-) ;-) ;-) ;-) ;-)
55  Programación / Desarrollo Web / Re: Hacer una busqueda de palabra completa en mysql en: 3 Noviembre 2021, 17:46 pm
Gracias por la explicación.
Pero yo quiero que busque cadenas de palabras completas y no fragmentos de cadena donde tenga la cadena de busqueda.

Es decir, si tengo
Código:
|Patata
|Patata-Frita
|Patata.Frita

Y escribo
SELECT dato FROM datos WHERE dato RLIKE 'patata'

me devolveria los 3 registros porque contienen la palabra patata cuando solo me deberia devolver la primera [patata].
Es decir que busque palabras completas y se considera palabra completa la separada por un espacio.

Ej :
arbol caido  => 2 palabras
arbol.caido => 1 palabra

Espero haberme explicado bien
Gracias



[
56  Programación / Desarrollo Web / Hacer una busqueda de palabra completa en mysql en: 3 Noviembre 2021, 16:59 pm
Quiero encontrar los registros que tengan en el campo nombre la palabra DEC.   (acabado en punto).
Si uso el RLIKE tal y como os pongo a continuación no me funciona por culpa del punto

Código:
SELECT name
FROM ps_product p LEFT JOIN ps_product_lang pl ON (pl.id_product=p.id_product)
WHERE `name` RLIKE "[[:<:]]REVIVAL[[:>:]]"
AND `name` RLIKE "[[:<:]]DEC[[:>:]]"

me devuelve :
revival dec. gris marea
revival dec. arena acuada

En cambio si pongo en RLIKE el punto al final en DEC. no me funciona

Código:
SELECT name
FROM ps_product p LEFT JOIN ps_product_lang pl ON (pl.id_product=p.id_product)
WHERE `name` RLIKE "[[:<:]]REVIVAL[[:>:]]"
AND `name` RLIKE "[[:<:]]DEC.[[:>:]]"

No devuelve ningún registro.

¿porque cuando le pongo el 'punto' no funciona? Es que tengo palabras a buscar donde el punto está dentro del string a buscar y me da problemas.

¿alguna solución?
Gracias


57  Programación / Bases de Datos / Re: consulta mysql en: 24 Junio 2021, 08:53 am
Funciona!! ya lo tengo arreglado.
Gracias
58  Programación / Bases de Datos / Re: consulta mysql en: 23 Junio 2021, 18:52 pm
Creo que ya lo he solucionado. Voy a comprobarlo bien

Código:
SELECT id_product, id_tag_special
FROM ps_product_tag_special
WHERE id_tag_special IN (8,15)
GROUP BY id_product
HAVING COUNT(DISTINCT id_tag_special) = 2
59  Programación / Bases de Datos / Re: consulta mysql en: 23 Junio 2021, 18:41 pm
Quiero obtener los id_product que tengan 8 y 15

Si utilizo la función IN de mysql no me sirve porque es como si hiciera un OR y no busco eso.
60  Programación / Bases de Datos / consulta mysql en: 23 Junio 2021, 17:50 pm
Os muestro por ejemplo los datos de un producto concreto :
SELECT * FROM ps_product_tag_special ts WHERE id_product=200000102

me devuelve :
id_product   id_tag_special
200000102   1
200000102   8
200000102   14
200000102   15

Quiero por ejemplo una SQL (MYSQL) que me devuelva los id_product  que tengan en su id_tag_special tanto el 8 como el 15.

Lo he intentado con la query :
SELECT DISTINCT(ts.id_product)
FROM ps_product_tag_special ts
WHERE ts.id_tag_special IN (8,15)

pero no me sirve porque me devuelve los id_product que tengan 8 o 15. 
Yo quiero la operación sea un AND y no un OR.

¿alguna sugerencia? Gracias

Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 61
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines