Coincidencia de palabras [Ayuda]

  • Autor Autor drop4
  • Fecha de inicio Fecha de inicio
D

drop4

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Buenas a todos, necesito filtrar ciertas palabras pero tengo un problema con los plurales.

Este es mi codigo:
PHP:
  $coincidencia_palabra = array['tecnico', 'tecnicos', 'sueldos'];
  $palabras ='tecnicos, sueldo';

  foreach ($coincidencia_palabra as $key => $type) {
        $coincidencias = strstr($palabras , $type);
        if ($coincidencias == true) {
          echo $type;
        }
   }

Me devuelve esto
tecnico, tecnicos, sueldos

Pero necesito que si detecta una palabra no la vuelva a detectar aunque sea plural, por lo que si detecta tecnico, se salte tecnicos y entonces quede tal que así:

tecnico, sueldos

Gracias por sus ayudas.
 
probaste usar array_unique — Elimina valores duplicados de un array ??
 
array_unique los considera idénticos así string===string .por lo tanto no te sirve.
Puedes contar las letras de los dos strings algo así:
string1=7
string2=8
entonces si las 7 letras de string1 las tiene string2 lo puedes considerar palabras iguales.
Si solo es para plural/singular puedes considerar iguales si al string que tiene mas letras le quitas la ultima o las dos ultimas letras y string1 === string2:
 
Última edición:
Tendrías que tener un array de relación de palabras con su plural o tener condiciones con todas las reglas de pluralización.
 
Gracias a todos por darme ideas, al final lo he conseguido con la funcion similar_text(), permite dar un % de igualdad.

Muchas gracias como siempre amigos.
 
Gracias a todos por darme ideas, al final lo he conseguido con la funcion similar_text(), permite dar un % de igualdad.

Muchas gracias como siempre amigos.
Para evitar posibles falsos positivos podrías usar este código:
PHP:
<?php
$palabras = array('sueldos', 'tecnico', 'tecnicos', 'sueldo', 'cafe');
$palabras_a_buscar = array('sueldo', 'tecnico');
foreach($palabras_a_buscar as $palabra_a_buscar){
    if($matches = preg_grep("/$palabra_a_buscar(s)?\b/i", $palabras)) {
        echo 'Palabra encontrada: '.current($matches).'<br/>';
    }
}

Esto imprimiría:
Insertar CODE, HTML o PHP:
Palabra encontrada: sueldos
Palabra encontrada: tecnico


O si también quieres ir eleminando las palabras encontradas del array, puedes usar algo así:
PHP:
<?php
$palabras = array('sueldos', 'tecnico', 'tecnicos', 'sueldo', 'cafe');
$palabras_a_buscar = array('sueldo', 'tecnico');
foreach($palabras_a_buscar as $palabra_a_buscar){
    if($matches = preg_grep("/$palabra_a_buscar(s)?\b/i", $palabras)) {
        echo 'Palabra encontrada: '.current($matches).'<br/>';
        foreach($matches as $key => $value){
            unset($palabras[$key]);
        }
    }
}

echo 'Array $palabras: <br/>';
print_r($palabras);

Esto devolvería:
Insertar CODE, HTML o PHP:
Palabra encontrada: sueldos
Palabra encontrada: tecnico
Array $palabras: 
Array ( [4] => cafe )
 
PHP:
<?php
$palabras = array('sueldos', 'tecnico', 'tecnicos', 'sueldo', 'cafe');
$palabras_a_buscar = array('sueldo', 'tecnico');
foreach($palabras_a_buscar as $palabra_a_buscar){
    if($matches = preg_grep("/$palabra_a_buscar(s)?\b/i", $palabras)) {
        echo 'Palabra encontrada: '.current($matches).'<br/>';
        foreach($matches as $key => $value){
            unset($palabras[$key]);
        }
    }
}

echo 'Array $palabras: <br/>';
print_r($palabras);


Muy buena la solución,
Por cierto aperpen me ha gustado tu web.
Me he pasado media vida mirando paginas como la tuya.
Es raro raro raro ver por aqui una pagina que no sea xxx warez o similar.
 
Última edición:
PHP:
<?php
$palabras = array('sueldos', 'tecnico', 'tecnicos', 'sueldo', 'cafe');
$palabras_a_buscar = array('sueldo', 'tecnico');
foreach($palabras_a_buscar as $palabra_a_buscar){
    if($matches = preg_grep("/$palabra_a_buscar(s)?\b/i", $palabras)) {
        echo 'Palabra encontrada: '.current($matches).'<br/>';
        foreach($matches as $key => $value){
            unset($palabras[$key]);
        }
    }
}

echo 'Array $palabras: <br/>';
print_r($palabras);


Muy buena la solución,
Por cierto aperpen me ha gustado tu web.
Me he pasado media vida mirando paginas como la tuya.
Es raro raro raro ver por aqui una pagina que no sea xxx warez o similar.

Lo mismo digo.. acabo de ver su web y la verdad es que se ve muy interesante
 
Atrás
Arriba