Lucas Matos
En SQL tenemos NOT LIKE %string%
Necesito hacer esto en PHP.
if ($string NOT LIKE %word%) { do something }
creo que se puede hacer con strpos()
Pero no puedo entender cómo…
Necesito exactamente esa oración de comparación en PHP válido.
if ($string NOT LIKE %word%) { do something }
marc b
if (strpos($string, $word) === FALSE) {
... not found ...
}
Tenga en cuenta que strpos()
distingue entre mayúsculas y minúsculas, si desea una búsqueda que no distinga entre mayúsculas y minúsculas, utilice stripos()
en cambio.
También tenga en cuenta el ===
, obligando a una estricta prueba de igualdad. strpos PUEDE devolver un válido 0
si la cadena de ‘aguja’ está al comienzo del ‘pajar’. Al forzar una verificación de un falso booleano real (también conocido como 0), elimina ese falso positivo.
-
tenga en cuenta que %palabra% es un comodín, no una variable… la $cadena contiene una dirección IP en forma de caracteres, como $cadena = 123.456.789.100, y quiero excluir (NO ME GUSTA) aquellas que comienzan con 123.456%
–Lucas Matos
2 de febrero de 2012 a las 20:06
-
@LucasMatos Entonces
$word = "word"
entonces… si bien es un comodín, es un uso muy trivial (“extremos flotantes”) questrpos
cubre (y de hecho es porque de esto questrpos
funciona aquí!).$word = "a?b"
no funcionaría con este enfoque, si?
estaba destinado a “coincidir con cualquier carácter”, por ejemplo– usuario166390
2 de febrero de 2012 a las 20:10
-
@LUcas: debería haberlo dicho en la pregunta, entonces. Los ejemplos simples obtienen respuestas simples.
– Marc B.
2 de febrero de 2012 a las 20:14
-
así es como se ve mi oración
if ($viewer_ip AND $viewer_ip != $last_viewer_ip AND strpos($viewer_ip, 66.249) === false) {
quiero excluir las ips de bot de google de mi contador. solo tengo que esperar que uno de ellos llegue a mi sitio para verificar si funciona correctamente. gracias a todos–Lucas Matos
2 de febrero de 2012 a las 20:25
-
tenga mucho cuidado con un número de punto flotante ‘desnudo’ como ese. PHP puede encadenarlo con decimales finales diferentes de lo que cabría esperar. Forzarlo a ser una cadena con
66.249
en cambio, y no es que ENCONTRARÁ cosas como166.249
. Si ese es el INICIO de la cadena, puede cambiar el===
a un simple>
en su lugar, para excluir cualquier coincidencia al principio.– Marc B.
2 de febrero de 2012 a las 21:46
Usar strpos
. Si no se encuentra la cadena, devuelve false
de lo contrario algo que no es false
. Asegúrese de utilizar una comparación de tipo seguro (===
) como 0
puede ser devuelto y es un valor falso:
if (strpos($string, $substring) === false) {
// substring is not found in string
}
if (strpos($string, $substring2) !== false) {
// substring2 is found in string
}
use
if(stripos($str,'job')){
// do your work
}
-
Esto fallará cuando
job
son los tres personajes principales de$str
. Si corrige este fragmento sin explicación, se convertirá en una respuesta duplicada en esta página. Esta publicación es segura de eliminar.– mickmackusa
22 de abril de 2021 a las 2:42
<?php
// Use this function and Pass Mixed string and what you want to search in mixed string.
// For Example :
$mixedStr = "hello world. This is john duvey";
$searchStr= "john";
if(strpos($mixedStr,$searchStr)) {
echo "Your string here";
}else {
echo "String not here";
}
Depende un poco de tus datos, ¿no? strpos(‘una idea tonta’,’tonto’) mostrará una coincidencia, pero puede que no sea lo que quieres. Si se trata de palabras, tal vez
preg_match(“!\b$palabra\b!i”,$frase)
es más sabio Solo un pensamiento.
-
Y si
$word
contiene caracteres especiales? Esta respuesta muestra cómo hacer coincidir una palabra completa. La pregunta preguntaba cómo determinar si una subcadena no está presente en una cadena de entrada.– mickmackusa
31 de enero a las 4:13
-
Y si
$word
contiene caracteres especiales? Esta respuesta muestra cómo hacer coincidir una palabra completa. La pregunta preguntaba cómo determinar si una subcadena no está presente en una cadena de entrada.– mickmackusa
31 de enero a las 4:13
Actualicé el título para reflejar mejor la pregunta. También se debe establecer la semántica exacta de la coincidencia de palabras. Puede ser mejor usar
\bword\b
o\bword|word\b
en determinadas situaciones.– usuario166390
2 de febrero de 2012 a las 20:05