Introducción
Hoy escribí una pequeña función que compara y evalúa si un carácter o string aparece únicamente una vez en otra cadena.
La función devolverá falso en caso de que no aparezca ninguna vez, ya que para que evalúe a verdadero debe aparecer una vez. No cero, no más, sino una.
Función
La función es sencilla. Solamente hace uso de la función substr_count que, como su nombre lo dice, cuenta cuántas veces aparece una porción de una cadena dentro de otra cadena.
Con eso simplemente comparamos si el resultado es 1, y si es que sí, regresamos verdadero.
Sin más que agregar, aquí dejo el código:
<?php
function apareceSoloUnaVez($cadena, $busqueda){
return substr_count($cadena, $busqueda) === 1;
}
//Para probar
$arreglo = [
"https://www.parzibyte.me" => "https",
"Hola, ¿Qué haces?" => "Qué",
":) hola :)" => ":)",
"Separado\ncon muchos\nsaltos de línea" => "\n",
"Lleva muchos espacios" => " ",
"Un espacio" => " ",
"<br>Soy html" => "<br>",
"<img src='imagen.png' src='perro.png'>" => "src="
];
foreach($arreglo as $cadenaPrueba => $busqueda){
printf("Probando si '%s' aparece sólo una vez en '%s'... %s\n\n", $busqueda, $cadenaPrueba, apareceSoloUnaVez($cadenaPrueba, $busqueda) ? "Sí": "No");
}
/*
Salida:
Probando si 'https' aparece sólo una vez en 'https://www.parzibyte.me'... Sí
Probando si 'Qué' aparece sólo una vez en 'Hola, ¿Qué haces?'... Sí
Probando si ':)' aparece sólo una vez en ':) hola :)'... No
Probando si '
' aparece sólo una vez en 'Separado
con muchos
saltos de línea'... No
Probando si ' ' aparece sólo una vez en 'Lleva muchos espacios'... No
Probando si ' ' aparece sólo una vez en 'Un espacio'... Sí
Probando si '<br>' aparece sólo una vez en '<br>Soy html'... Sí
Probando si 'src=' aparece sólo una vez en '<img src='imagen.png' src='perro.png'>'... No
*/
?>