php

Índice o posición de un carácter en cadena de PHP

Introducción

En algunas ocasiones necesitaremos encontrar la posición de un carácter en una cadena. Por ejemplo, el índice de una letra, un punto, un salto de línea, etcétera.

Esta función también es conocida como indexOf, algo así como índice de. En PHP contamos con dos funciones para esto, que al final nos pueden terminar confundiendo: strpos y strrpos (sí, una tiene doble r).

Veamos entonces cómo podemos aprovechar cada una de ellas.

strpos

Esta función devuelve el índice de la primer ocurrencia de un carácter en una cadena. Por ejemplo, tenemos lo siguiente:

Esta es una cadena

Si ejecutamos strpos buscando la letra “s” nos dará el índice 1, aunque hay otra s en la posición 6.

Nota: esta función devuelve false si es que no se encuentra lo que buscamos.

strrpos

Esta función es parecida a la anterior, pero comienza a buscar desde el final de la cadena. Si ejecutamos strrpos sobre la cadena del ejercicio anterior, ahora sí nos dará 6.

Nota: esta función devuelve false si es que no se encuentra lo que buscamos (igual que la anterior).

Comprobar si una cadena tiene determinado carácter

Como dijimos que las funciones devuelven false en caso de no encontrar el carácter, podemos usarlas para ver si una cadena contiene una letra o carácter.

Por ejemplo, supongamos que necesitamos que una cadena no tenga saltos de línea ni puntos. Para ello podemos probar con lo siguiente:

$cadenaMala = "Este es\nun ejemplo de cadena.";
if(strpos($cadenaMala, ".") === false && strpos($cadenaMala, "\n") === false )
 echo "Está bien"; 
else echo "Está mal";

Como se ve, buscamos primero si tiene algún punto, y después un salto de línea.

Ejemplo práctico: extensión de un archivo

Para terminar con esto haremos una función que devuelva la extensión de un archivo. Por ejemplo, si el nombre es “libro.pdf” debería devolver “pdf”.

Para esto podríamos usar strpos (comienza desde el inicio) pero habría un error, ya que si un archivo se llama “matemáticas.1.pdf” pensaría que la extensión es “1.pdf” cosa que es un error.

Entonces será mejor usar strrpos en conjunto con substr, para cortar la cadena desde donde se encuentre el último punto. La función queda así:

<?php
function extensionDe($nombre){
  $posicionPunto = strrpos($nombre, ".");
  if($posicionPunto !== FALSE){
    return substr($nombre, $posicionPunto + 1);
  }else return "Desconocida";
}

//Probar
$archivos = [
  "David Guetta - Who's That Chick _ (feat. Rihanna).mp3", 
  "index.php", 
  "It.mkv", 
  "Brevísima historia del tiempo.pdf",
  "InterruptorBluetooth.ino",
  "HolaMundo.cs",
  "08 The Strokes - Gratisfaction.flac",
  "Esta no lleva",
  ];

foreach($archivos as $archivo){
  printf("La extensión de '%s' es '%s'\n", $archivo, extensionDe($archivo));
}

/*
Salida:
La extensión de 'David Guetta - Who's That Chick _ (feat. Rihanna).mp3' es 'mp3'
La extensión de 'index.php' es 'php'
La extensión de 'It.mkv' es 'mkv'
La extensión de 'Brevísima historia del tiempo.pdf' es 'pdf'
La extensión de 'InterruptorBluetooth.ino' es 'ino'
La extensión de 'HolaMundo.cs' es 'cs'
La extensión de '08 The Strokes - Gratisfaction.flac' es 'flac'
La extensión de 'Esta no lleva' es 'Desconocida'
*/?>

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

15 horas hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

6 días hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

3 semanas hace

Imprimir ñ en impresora térmica

En este post te enseñaré a imprimir la letra ñ en una impresora térmica. Voy…

4 semanas hace

Esta web usa cookies.