Encontré el error. Después de pensar sobre el algoritmo di con el error mientras corría.
El problema estaba en la expresión regular para sustituir un valor por otro.
Quedó así
Código PHP:
Ver original<?php
/*
* busca y sustituye un patron dentro de una URL para
* eliminar ese patron y sustituirlo para crear una nueva URL
* evitando repetir el patron en la URL
*
* por ejemplo evitar:: ?page=1&page=2&page=3
*/
public function createURL($url, $id, $page)
{
//si el identificador no se encuentra en la url
{
//agrega al final de la url el identificador y el valor que le corresponde
$url = $url."&".$id."=".$page;
}
//sino busca y reemplaza el identificador en la url por su nuevo valor
else
{
$url = preg_replace("/(".$id."=[[:digit:]])/i", $id."=".$page, $url); }
return $url;
}
?>