Lenguaje PHP

Crear URL única con PHP: Ejemplo completo

Crear URL única con PHP. En este Post aprenderemos a crear Slug desde un título en PHP es muy fácil y podemos hacer fácilmente estas cosas. Usaremos formulario HTML5, Funciones PHP y como elementos secundarios usaremos la Librería BootStrap para manejar estilos profesionales.

¿Cómo podemos generar url slug único a partir del mismo título en PHP?

Si hemos creado un sistema web, de comercio electrónico o quizá un blog es imprescindible generar o crear de slug. Por lo tanto, es una tarea muy importante, porque queremos generar cada url debe ser única si es duplicada entonces cargará un resultado diferente en la página web.

¿Cómo funciona el script?

Primeramente, hacemos uso de un formulario para que el usuario ingrese el título que puede constar de varias palabras. Sin embargo, el contenido dinámico del sitio web se almacenará en la base de datos Mysql.

Además, no permitirá contenido duplicado y para dar soluciona ese problema agregará un numero al termino del slug generado.

Crear URL única con PHP

Si hemos utilizado cualquier framework PHP para el desarrollo de sitio web entonces podemos conseguir fácilmente slug de título y, pero aquí tenemos discutir cómo hacer el slug usando PHP y debe ser único. Por lo tanto, en este post hemos describe paso a paso cómo podemos generar slug único mediante el uso de PHP.

Crear URL única con PHP
Crear URL única con PHP

La información creada se almacenará datos en la tabla mysql y cuando hemos generado nuevo slug de título en particular, entonces se comprobará en la base de datos particular slug o url ya presente en nuestra base de datos o no, está presente entonces contará cuántas veces ha sido aparecer en la base de datos y por último se añadirá el número máximo más un número anexar en slug y hacer en único.

ESTRUCTURA: Crear URL única con PHP

A continuación, puedes encontrar código fuente completo para cómo crear slug único en php.

A) La Base de Datos

En esta tabla almacenaremos las url únicas creadas en el formulario.

CREATE TABLE `slug` (
`slug_id` int(11) NOT NULL,
`slug_titulo` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`slug_url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

ALTER TABLE `slug`
ADD PRIMARY KEY (`slug_id`);

ALTER TABLE `slug`
MODIFY `slug_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

 

B) Conexión con la base de datos: PHP PDO

Para este ejemplo usaremos la conexión PDO que es la más segura para poder conectarnos a MySQL

$connect = new PDO("mysql:host=localhost;dbname=db_url", "root", "");

C) Condicional de Ejecución

Usaremos la condicional If e Isset para validar el envío del formulario.

$slug = '';
if(isset($_POST["crear_slug"]))
{
$slug = preg_replace('/[^a-z0-9]+/i', '-', trim(strtolower($_POST["titulo"])));

$query = "SELECT slug_url FROM slug WHERE slug_url LIKE '$slug%'";

$statement = $connect->prepare($query);
if($statement->execute())
{
$total_row = $statement->rowCount();
if($total_row > 0)
{
$result = $statement->fetchAll();
foreach($result as $row)
{
$data[] = $row['slug_url'];
}

if(in_array($slug, $data))
{
$count = 0;
while( in_array( ($slug . '-' . ++$count ), $data) );
$slug = $slug . '-' . $count;
}
}
}

$insert_data = array(
':slug_titulo' => $_POST['titulo'],
':slug_url' => $slug
);
$query = "INSERT INTO slug (slug_titulo, slug_url) VALUES (:slug_titulo, :slug_url)";
$statement = $connect->prepare($query);
$statement->execute($insert_data);
}

D) Resultados en el navegador

Cuando ejecutamos el formulario podemos apreciar el SLUG generado de manera dinámica. Aquí el script

<?php
if(isset($_POST["crear_slug"]))
{
echo'<h4> Titulo Ingresado:</h4>';
echo'<div class="alert alert-primary" role="alert">
'.$_POST['titulo'].'
</div>';

echo'<h4> Slug Generado:</h4>';
echo'<div class="alert alert-success" role="alert">
'.$slug.'
</div>';
}
?>

CÓDIGO FUENTE COMPLETO

Este es el código completo que contiene las instrucciones PHP para lograr la creación de la URL única. Además, posee la conexión con la base de datos y a la vez muestra inserta la información a MySQL a través del envío del formulario con sus respectivas validaciones.

<?php

$connect = new PDO("mysql:host=localhost;dbname=db_url", "root", "");
$slug = '';
if(isset($_POST["crear_slug"]))
{
$slug = preg_replace('/[^a-z0-9]+/i', '-', trim(strtolower($_POST["titulo"])));

$query = "SELECT slug_url FROM slug WHERE slug_url LIKE '$slug%'";

$statement = $connect->prepare($query);
if($statement->execute())
{
$total_row = $statement->rowCount();
if($total_row > 0)
{
$result = $statement->fetchAll();
foreach($result as $row)
{
$data[] = $row['slug_url'];
}

if(in_array($slug, $data))
{
$count = 0;
while( in_array( ($slug . '-' . ++$count ), $data) );
$slug = $slug . '-' . $count;
}
}
}

$insert_data = array(
':slug_titulo' => $_POST['titulo'],
':slug_url' => $slug
);
$query = "INSERT INTO slug (slug_titulo, slug_url) VALUES (:slug_titulo, :slug_url)";
$statement = $connect->prepare($query);
$statement->execute($insert_data);
}

?>
<!DOCTYPE html>
<html>
<head>
<title>Cómo crear URL única en PHP</title>
<!-- CSS only -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" crossorigin="anonymous">

<!-- JS, Popper.js, and jQuery -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" crossorigin="anonymous"></script>
<style>
.box
{
max-width:600px;
width:100%;
margin: 0 auto;;
}
</style>
</head>
<body>
<div class="container box">
<br />
<h3 align="center">Cómo crear URL única en PHP</h3>
<br />
<form method="post">
<div class="form-group">
<label>Ingrese titulo a crear slug</label>
<input type="text" name="titulo" class="form-control" required />
</div>
<br />
<div class="form-group">
<button name="crear_slug" class="btn btn-primary btn-block">Crear Slug</button>
</div>
<br />
</form>
<?php
if(isset($_POST["crear_slug"]))
{
echo'<h4> Titulo Ingresado:</h4>';
echo'<div class="alert alert-primary" role="alert">
'.$_POST['titulo'].'
</div>';

echo'<h4> Slug Generado:</h4>';
echo'<div class="alert alert-success" role="alert">
'.$slug.'
</div>';
}
?>
</div>
</body>
</html>

CONCLUSIÓN

En este articulo hemos aprendido a crear URL únicas usando la función preg_replace del PHP
Recordemos que generar o crear una URL única es una tarea muy importante para cualquier desarrollador web PHP.
Además, Una URL amigable es imprescindible para el SEO en Google.

DESCARGA DEL CÓDIGO

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba