Errar es de humanos, y nada nos hace más humanos que estar a las 2 de la mañana programando y equivocarnos en algún commit en git que no queríamos hacer o que simplemente nos faltó algo.

Pero gracias a la flexibilidad que tiene git y a que está pensado por programadores es muy fácil deshacer un commit.

Tenemos 3 escenarios vamos viendo uno a uno:

Para estos ejemplos vamos a suponer que tenemos tres commit A-B-C siendo C el último commit.

1. Queremos deshacer el último commit para modificar algo o agregar alguna línea que nos faltó, el equivalente al Ctrl+Z (o Cmd+Z) de git. Para esto simplemente ejecutamos el siguiente comando:

git reset --soft HEAD^1

En el caso que utilices MS Windows tienes que ejecutar git reset –soft HEAD~1 (nota el cambio de ^ por ~)

Después de ejecutar este comando quedaría A-B y los archivos con los cambios.

Con esto eliminamos el commit pero permanecen los cambios que habías realizado, luego de que termines de editar lo que te había faltado vuelves a hacer el commit como siempre lo haces. Algo como:

git add .
git commit -m "Mensaje explicativo del commit"

2. En el último commit que hiciste no merece existir más y quieres eliminarlo de la faz de la tierra y que nadie se entere de lo que hiciste jamás, no quieres guardar ningún cambio de este último commit. Entonces para esto ejecutas:

git log
git reset --hard HEAD^1

En el caso que utilices MS Windows tienes que ejecutar git reset –hard HEAD~1 (nota el cambio de ^ por ~)

En este caso quedaría A-B y C ni los últimos cambios existen.

Con esto se eliminará el último commit por completo y es como si nunca hubiera existido, por qué el git log? es una medida de seguridad si por casualidad te arrepientes de haberlo eliminado porque justo en ese último commit estaba la línea que hacía que todo funcionara puedes recuperarlo ejecutando:

git checkout -b nombre_nueva_rama sha_del_commit_que_destruiste

El sha_del_commit_que_destruiste es el número que aparece al lado de la palabra commit cuando ejecutas git log por ejemplo commit 345f7115ce3e1e611f41cd7492ed0e69945e858d. Estamos creando una nueva rama después que termines de hacer los cambios puedes hacer un merge con la ramas que estás trabajando.

3. Ya el commit está en el repositorio público, para esto la mejor práctica no es eliminar el commit sino crear un nuevo commit revirtiendo los cambios del último. Ejecutamos:

git revert HEAD

Ahora los cambios ya han sido deshechos y están listo para que hagas commit:

git commit -m "Revirtiendo últimos cambios"
git push

Eso es todo realmente muy fácil de corregir esos errores que nos pasan a todos, si tienen alguna pregunta, duda o recomendación por favor déjenla en los comentarios y con gusto les responderé.

Sublime Text 3

Sublime Text es uno de los mejores editores de código que hay actualmente y yo personalmente lo utilizo todos los días. Si quieres instalar Sublime Text 3 en Ubuntu a través de PPA para que se mantenga actualizado automáticamente lo puedes hacer ejecutando los siguientes comandos en la terminal:

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Gracias a los de http://www.webupd8.org/ ya tenemos Sublime Text 3 instalado y listo para usar.

Si no quieres utilizar ppa o no utilizar Ubuntu, simplemente puedes ir a la página de descarga de Sublime Text y bajar la versión que quieras, http://www.sublimetext.com/3 hay versiones para MS Windows, OS X y Ubuntu y otras distribuciones de Linux.

El Jueves 7 de Noviembre se va a estar realizando el primer evento en línea (vía Google Hangout) de la comunidad de emprendedores de habla hispana en el mundo. La temática va a ser en torno a la gran interrogante inicial que tiene o al menos pudiese tener un emprendedor, y es que finalmente mucha gente aún sin saber que es capaz de ser un emprendedor, ese que haga la diferencia, puede estar en la etapa en que se su pregunta es: Tengo una idea y ¿Cómo diablos comienzo?

Como invitado especial tendremos a Claudio Barahona Jacobs, Gerente de Negocios de Wayra Chile. “Fundó su primera empresa a los 18 años: una reconocida agencia de eventos tecnológicos. Tras terminar Ingeniería Civil Industrial en la U. de Chile, decidió que su gran fortaleza era apoyar y motivar a otros a emprender, en la labor de ejecutivo de proyectos tecnológicos en la incubadora Octantis de la U. Adolfo Ibañez. Luego tuvo un exitoso paso por la División de Innovación del Ministerio de Economía, tomando las funciones de Coordinador de Emprendimiento y Capital Humano. Hoy pertenece al equipo de Movistar Innova, fundando el Centro Movistar Innova y liderando el programa Wayra en Chile.” fuente LinkedIn

El evento va a ser moderado por Oswaldo Álvarez (@ozalvarez) Consultor, Emprendedor y Fundador de la Comunidad de Emprendedores de Habla Hispana, Juan Sapene CEO de DigitalConexión, Emprendedor y Consultor, Alejandro Quintero Gerente de Proyectos y Emprendedor y Olivers De Abreu CEO en Vensign.

El evento es totalmente gratuito y será a las 6:30pm Chile, 6:30pm Argentina, 4:30pm Colombia, 5:30pm Venezuela, 4:30pm Miami, 2:30pm San Francisco. Para confirmar la asistencia y obtener más información del hangout pueden hacerlo en los siguientes enlaces:

Google+: https://plus.google.com/u/0/events/c00cje6m35vf4bm5q9ube3akddo

Facebook: https://www.facebook.com/events/610346615692633/

 

Si quieres saber más información de la comunidad, te esperamos en la red social de tú preferencia:

@emprenderhhm

Google+ Page

Google+ Comunidad

Website (Tumblr)

Facebook Page

Facebook Group

http://emprenderhhm.com/post/65399170997/tengo-una-idea-y-como-diablos-comienzo

Si a media noche te equivocas en el mensaje de commit de git o simplemente cometiste algún error ortográfico o descriptivo y te das cuenta ante de hacer push al repositorio es muy fácil reparar el error

Simplemente ejecuta:

git commit --amend -m "Nuevo mensaje de commit"

Eso es todo después pudes hacer push y todo como nuevo.

Qué pasa si ya hiciste push y te equivocaste en el mensaje de commit?, Hay formas de cambiarlo pero si es un repositorio compartido no es para nada recomendado y escapa del alcance de este pequeño tip.

Puedes ver una respuesta relacionada a esto en StackOverflow:

http://stackoverflow.com/questions/179123/how-do-i-edit-an-incorrect-commit-message-in-git

Este es un pequeño tutorial de como instalar PHPUnit que es un framework para realizar pruebas de nuestro código PHP.

Cómo prerequisito tenemos que tener instalado PEAR, viene preinstalado en muchas de las distribuciones de Linux y es fácil de instalar en MS Windows y MAC OS.

En Ubuntu para instalar PEAR ejecutamos

sudo apt-get install pear

Y luego lo actualizamos ejecutando:

sudo pear upgrade pear

Instalar PHPUnit

Primero instalamos el paquete de phpunit de Ubuntu ejecutando:

sudo apt-get install phpunit

Luego ejecutamos las siguientes líneas en el terminal para agregar los canales de dependencia de PHPUnit:

sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover components.ez.no
sudo pear channel-discover pear.symfony.com

Por último instalamos PHPUnit ejecutando:

sudo pear install --alldeps phpunit/PHPunit

Para comprobar que PHPUnit está instalado correctamente podemos ejecutar:

phpunit –version

phpunit --version
PHPUnit 3.7.19 by Sebastian Bergmann.

Les debería aparecer algo como la última línea la versión podría variar.

Con esto ya tenemos instalado PHPUnit y podemos comenzar a probar.

Cualquier duda o sugerencia por favor dejen un comentario.

El directorio por defecto de apache2 en Ubuntu es /var/www. Aquí es donde normalmente guardamos los archivos de nuestros sitios.

Si queremos cambiar este directorio por otro podemos utilizar los siguientes pasos, estos son realizados en Ubuntu pero deberían servir para cualquier otra distribución.

Crear un nuevo sitio

Primero creamos una copia del sitio por defecto ejecutando en el terminal:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/misitio

Donde misitio es el nombre del nuevo sitio que queremos crear puede ser cualquiera que tu quieras.

Luego editamos este archivo como administrador en nuestro editor favorito puede ser nano, vim o gedit:

gksudo gedit /etc/apache2/sites-available/misitio

Dentro del archivo modificamos las siguientes lineas:

DocumentRoot /var/www por /home/vensign/misitio

Y

<Directory /var/www/> por <Directory /home/vensign/misitio/>

En este caso cambiamos el directorio por uno dentro de /home/vensign/misitio que es el directorio de nuestro usuario y que debe estar creado (mkdir /home/vensign/misitio en este caso).

[alert_yellow textalign=”left”] Recuerda cambiar /home/vensign/misitio al directorio que vas a utilizar[/alert_yellow]

También puedes definir logs separados para cada sitio. Para hacer esto cambia las líneas de ErrorLog y CustomLog. Esta opción es opcional, pero es últil si tienes multiples sitios.

Guardamos el archivo y ya tenemos la primera parte.

Activar el nuevo sitio

Ahora debemos deshabilitar el sitio por defecto y habilitar el nuevo sitio. Esto lo hacemos con los comandos a2dissite y a2ensite de Apache, ejecutando en terminal

sudo a2dissite default && sudo a2ensite misitio

Recuerden cambiar misitio por el nombre que colocaste en /etc/apache2/sites-available/ en el paso 1

Reiniciar Apache

Por último debemos reiniciar Apache para que los cambios tengan efecto:

sudo service apache2 reload

Eso es todo ya deberíamos poder navegar a localhost en el caso de ser un sitio local o a la IP o dirección de nuestro servidor y ver los contenidos del directorio que hemos colocado.

Cualquier duda o problema por favor dejen sus comentarios.

Logo Composer PHPComposer es un manejador de dependencias para PHP, este proyecto inspirado en npm y Bundler y sirve para administrar librerías de terceros o propias en nuestros proyectos de PHP.

Composer es capaz de de instalar las librerías que requieres para tu proyecto con las versiones que necesites y si esas librerías dependen de otras también es capaz de resolver las dependencias y descargar todo lo que necesites para que funcione, quitándonos el dolor de tener que hacer esto manualmente y mantenerlo todo actualizado.

Instalar Composer

Composer está formado por dos partes, la primera es una aplicación de línea de comandos que permite encontrar, descargar, actualizar y compartir los paquetes o librerías y el otro es el repositorio donde se guardan dichos paquetes o librerías.

Para instalar Composer solo debes ejecutar en el terminal:

cd /ruta_a_tu_proyecto_php
curl -s https://getcomposer.org/installer | php

Si NO tienes curl instalado puedes ejecutar:

php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

Lo que hace este instalador es chequear que tu php.ini esté configurado con lo necesario y de lo contrario te arrojará un error.

[alert_yellow textalign=”left”] Composer es un archivo ejecutable Phar por lo que debes tener habilitado phar dentro del php.ini, si no lo tienes simplemente descomenta extension=phar.so. [/alert_yellow]

Luego para comprobar que se instaló correctamente puedes ejecutar

php composer.phar

Si todo salió bien debe desplegar una lista de las opciones del comando.

Si quieres ejecutar Composer globalmente ejecutamos este comando adicional:

sudo mv composer.phar /usr/local/bin/composer

Con esto podremos ejecutar directamente el comando desde cualquier sitio o proyecto, por ejemplo:

composer about

Utilizando Composer

Como mencionamos anteriormente Composer está basado en Bundler y npm por lo que su uso es muy parecido a estas herramientas.

Para indicar las dependencias de tu proyecto debes crear un archivo llamado composer.json que en su forma más básica debe verse así:

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

Veamos sus partes:

  • require: esta palabra simplemente le dice a Composer que necesitamos la libreria que le indicamos dentro de los corchetes {}
  • Nombre del paquete o libreria: está separado en dos partes vendedor/proyecto, normalmente estos dos son iguales como en este caso o pueden ser distintos por ejemplo “illuminate/foundation”.
  • Versiones del paquete: después de los dos puntos ( : ) indicamos la versión que queremos de este paquete. Tenemos varias opciones:
    • Versión exacta: podemos decirle a Composer que queremos una versión específica como por ejemplo 1.0.1.
    • Rango: Podemos definir rangos de versiones con los operadores >, >=, <, <=, !=. Por ejemplo si queremos una versión mayor a la 2 colocariamos >2. También podemos definir entre dos versiones separando con comas, por ejemplo >=1.0, <2.0.
    • Comodín: podemos usar el comodín ( o wildcard ) * para definir versiones, como ejemplo 1.0.* esto quiere decir cualquier versión dentro de 1.0 ( 1.0.1, 1.0.2 … 1.0.8 etc.)
    • Por último tenemos el operador ~, es un poco dificil de explicar así que usaremos un ejemplo: tenemos una librería que tiene la versión 1.x y 2.x pero no son compatibles entre ellas y queremos la última de 1.x y no la de 2.x entonces utilizaríamos el operador de esta forma ~1.2 que es equivalente a >=1.2, <2.0, mientras si vamos a algo más específico como ~1.3.1 es equivalente a >=1.3.1, <1.4.

Como vemos podemos ser tan libres o específicos como queramos, y me falto mencionarles que si no nos importa la versión simplemente podemos colocar “*”.

Instalando las Dependencias

Una vez que tengas configurado tu archivo composer.json con todos los paquetes que requiere tu proyecto es hora de que Composer haga su trabajo y lo instale para esto ejecutamos:

php composer.phar install

O si seguiste mi consejo e instalaste Composer como un comando global (ver arriba) puedes ejecutar:

composer install

Una vez que termina de descargar los paquetes los coloca dentro de una carpeta llamada vendor por defecto esto lo podemos cambiar en nuestro archivo composer.json agregando las siguientes líneas:

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
    "config": {
        "vendor-dir":"librerias"
    }
}

Aquí especificamos librerias como el directorio a donde se descargan los paquetes. 

[alert_green textalign=”left”]Tip: Si estás utilizando git para tu proyecto, probablemente quieras agregar vendor (o el directorio que hayas especificado) dentro de .gitignore. Con esto evitamos agregar el código adicional a nuestro repositorio sin necesidad. [/alert_green]

Si queremos actualizar las librerias ejecutamos:

php composer.phar update

O si está como comando global:

composer update

Autoloading

Ademas de descargar las librerias, Composer también prepara un archivo de autoload que es capaz de autocargar todas las clases en cualquiera de las librerías descargadas. Para utilizarlo, simplemente añadimos la siguiente línea en nuestro código:

require 'vendor/autoload.php';

[alert_red textalign=”left”] Por supuesto que si cambiaste el directorio de descarga lo tienes que actualizar en esta línea. [/alert_red]

Repositorios

Si quieres ver los paquetes disponibles puedes visitar el repositorio en https://packagist.org/

Conclusión

Esto es todo por ahora, Composer a mi parecer es una herramienta que hacia mucha falta en PHP, muchos frameworks como FuelPHP, CodeIgniter, Symfony2 y Laravel ya están integrando Composer.

Además es una gran herramienta para utilizar tanto en desarrollo como en producción y que nos ahorra una gran cantidad de trabajo de manejo y mantenimiento.

Aquí solo he tocado la superficie de la configuración puedes ver mucho más en la Documentación.

Me gustaría saber que opinan de esta herramienta y si la está usando o la planean utilizar en sus proyectos, por favor dejen sus comentarios.

Recursos

[list_check]

[/list_check]

 

Ruby on Rails es un popular framework de desarrollo web y que cada día gana más seguidores y entusiastas por su forma de desarrollo y su “Convención sobre Configuración”. Ultimamente he estado experimentando algunas cosas con Ruby on Rails y cada vez le agarro un poco más de “cariño” así que aquí les explicaré como instalar este framework en Ubuntu 12.04.

Al final de este tutorial tendremos instalado Ruby en su versión 1.9.3 y Rails listo para empezar a desarrollar tus aplicaciones.

1. Configurar el Terminal de Gnome e instalar las dependencias

Vamos a utilizar RVM para instalar Ruby, este es una herramienta bastante útil que nos permite manejar las versiones de Ruby de manera fácil y sencilla. Para que RVM funcione tenemos que configurar nuestra terminal para que se comporte como un shell de login.

Lo primero que tenemos que hacer es abrir el Terminal de Gnome e ir al menú de Editar>Perfiles… luego hacemos click en Editar para cambiar la configuración del perfil. Seleccionamos la pestaña de Título y Comando y seleccionamos Ejecutar el comando como intérprete de conexión. Como una imagen vale más que mil palabras aquí está.

Cambiar preferencias de terminal gnome

Hacemos click en Cerrar y listo ya nuestro terminal se va a comportar de la forma que RVM lo requiere.

Luego tenemos que instalar un par de dependencias que necesitamos para hacer la instalación git y curl.

Para actualizar los repositorios de Ubuntu:

sudo apt-get update

Para instalar git y curl

sudo apt-get install git curl

Ya tenemo todo listo con las dependencias ahora vamos con lo nos importa.

2. Instalar RVM y Ruby

Para obtener e instalar RVM ejecutamos en el terminal:

curl -L get.rvm.io | bash -s stable

Luego cargamos el RVM:

source ~/.rvm/scripts/rvm

Por último instalamos las dependencias adicionales de RVM, si queremos ver las dependencias ejecutamos rvm requirements nos va a dar una serie de listas dependiendo de si solo queremos instalar Ruby, JRuby o IronRuby. Como queremos instalar solo Ruby ejecutamos en el terminal:

sudo apt-get -y install build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

Instalar un framework de Javascript

Para las nuevas versiones de Rail se necesita un framework de Javascript por lo que vamos a instalar nodejs. Simplemente ejecutamos

sudo apt-get install nodejs

3. Instalar Ruby

Por fin ya vamos a la instalar Ruby, ya tenemos RVM instalado y funcionando por lo que instalar y manejar varias versiones de Ruby va a ser muy fácil. Para instalar ejecutamos el siguiente comando:

rvm install 1.9.3

En caso que quieras instalar ruby 1.9.3, si quieres otra versión simplemente coloca el número de la versión que quieras instalar y rvm se encarga.

Tambien puedes instalar más de una versión, después definimos la versión que instalamos como la que vamos a utilizar por defecto ejecutando:

rvm use 1.9.3 --default

Con esto ya tenemos ruby1.9.3 instalado y funcionando, para chequear la versión de ruby en cualquier momento puedes ejecutar

ruby -v

4. Instalar Rails

Cuando instalamos ruby con RVM también se instala gem que es la utilidad que usa ruby para manejar librerias. Para instalar rails ejecutamos:

gem install rails

Y eso es todo ahora podemos crear una aplicación ejecutando:

rails new nombre_aplicacion
cd nombre_aplicacion
rails server
Y ahora abre tu navegador favorito y ve a http://localhost:3000
 

Y verás algo como esto:

Ruby on Rails funcionando

Así que ya estamos listos para empezar a desarrollar. Espero que les sirva, cualquier duda o sugerencia por favor dejen su comentario.

La función the_excerpt() nos devuelve un extracto de nuestro artículo  o post y es útil, cuando queremos presentar sólo parte del contenido ya sea en nuestra página principal, en un widget o en cualquier otra parte de nuestra página.

Esta función debe ir dentro del loop y por defecto devuelve 55 caractéres y termina en […] y elimina cualquier etiqueta HTML e imágen que puedan estar dentro del extracto.

Pero que pasa si queremos más de 55 caracteres o queremos incluir un link en cambio de los tres puntos suspensivos y algo más significativo como leer más.

No hay problema gracias a los filtros de WordPress podemos cambiar estos parámetros sin problemas.

Modificar la longitud de the_excerpt()

1. Abre el archivo functions.php de la carpeta del tema que estés utilizando. ( Normalmente estará ubicado en la carpeta wp-content/themes/nombre_carpeta_tema/functions.php )

Nota: también se puede modificar el archivo functions.php a través del Escritorio de WordPress en Apariencia>Editor

2. Al final del archivo functions.php antes del último ?> colocamos el siguiente código:

/**
*  $long es una variable para indicar de cuantos caracteres de
*   longitud queremos nuestro extracto
*/

function mi_excerpt_long( $long ) 
{
        if (!$long) // si no se especifica
        {
	    return 40; //la longitud por defecto sera 40
        }
        else
        {
             return $long;
        }
}
add_filter( 'excerpt_length', 'mi_excerpt_long', 999 );

El uso dentro del loop si queremos que nos de 100 caracteres sería:

mi_excerpt_long(100);

Para explicar un poco el código lo que hace esta función es tomar una variable llamada $long que nos indica la longitud de caracteres, si esta variable no es colocada la longitud por defecto sería de 40, si no regresa el número de caracteres que le pasamos a la función. Luego utilizamos el filtro excerpt_length para indicarle a WordPress que es lo que queremos modificar con esta función. El número 999 si se lo preguntan es simplemente la prioridad de carga de este filtro, lo colocamos alto para que no interfiera con otros filtros más importantes.

Agregar leer más con un link al final del extracto

Por defecto el extracto termina con […], sin ningún link para seguir leyendo. Para cambiar esto vamos a utilizar otro filtro llamado excerpt_more. Igual que la vez anterior vamos a agregar un función al final del archivo functions.php.

function mi_excerpt_leermas() {
       global $post;
	return '<a href="'. get_permalink($post->ID) . '"> Leer más...</a>';
}
add_filter('excerpt_more', 'mi_excerpt_leermas');

No necesitamos agregar nada a nuestro loop excepto la función the_excerpt() o podemos utilizar la función que hicimos para cambiar la longitud del extracto. El filtro excerpt_more lo que hace es cambiar los tres puntos al final de extracto por lo que coloquemos en el texto del link.

[alert_blue textalign=”left”]Aquí también estamos utilizando otra función de WordPress get_permalink(), que nos devuelve el link permanente al post actual del loop.[/alert_blue]

Nota: Para versiones anteriores a WordPress 2.8 el filtro se llama wp_trim_excerpt. Pero no es aconsejable utilizar versiones tan viejas de WordPress.

Más información en el codex de WordPress: the excerpt

Ya con esto finalizamos y espero que les sirva en sus temas de WordPress, cualquier duda, pregunta o sugerencia por favor dejen sus comentarios.

Muchas veces cuando estamos realizando nuestras páginas y aplicaciones necesitamos presentar solo una porción del texto ( de un String ), como por ejemplo cuando tenemos un artículo y sólo queremos mostrar un pequeño extracto en alguna parte.

/**
* Return sub string sin etiquetas HTML y puntos suspensivos al final
* @param $string String 
* @param $length Largo que queremos el substring
* @return String con ...
*/

public function getSubString($string, $length=NULL)
{
    //Si no se especifica la longitud por defecto es 50
    if ($length == NULL)
        $length = 50;
    //Primero eliminamos las etiquetas html y luego cortamos el string
    $stringDisplay = substr(strip_tags($string), 0, $length);
    //Si el texto es mayor que la longitud se agrega puntos suspensivos
    if (strlen(strip_tags($string)) > $length)
        $stringDisplay .= ' ...';
    return $stringDisplay;
}

Yo suelo colocar el nombre de las variables en mis funciones en inglés, por costumbre y por estandar. Veamos como está compuesta la función:

La función acepta dos parámetors $string que es el texto que queremos acortar y length que es el largo que queremos que nos devuelva el nuevo texto.

Utilizamos  la función substr de PHP, esta función acepta los siguientes parámetros:

string substr ( string $string , int $start [, int $length ] )

Un $string que es el texto que queremos acortar y los otros dos parámetros es donde queremos comenzar y donde queremos que finalice. Adicionalmente utilizamos la función strip_tags que elimina las etiquetas HTML del texto, esto nos sirve para dos cosas la primera es para quitar cualquier formato del texto y segundo nos sirve para eliminar cualquier etiqueta que nos pueda ocasionar problemas ya sea al guardar el texto en una base de datos o al utilizarlo como una variable en nuestro código. Si quieres conservar las etiquetas simplemente quita strip_tags y deja solo la variable $string.

Tambien damos un valor por defecto a la longitud (length) en caso de que no se le pase este valor a la función.

Por último simplemente verificamos que si el largo del texto es mayor que el largo al que lo queremos cortar le agregue puntos suspensivos al final.

Forma de uso:

//El string que queremos recortar con etiquetas HTML
$texto = "<p>Hay dos cosas infinitas: el Universo y la <strong>estupidez humana</strong>. Y del Universo no estoy seguro.</p>"
//La función colocando un largo de 42 caracteres contando los espacios.
getSubString($texto, 42)

Obtendremos:

Hay dos cosas infinitas: el Universo y la ...

Es una función bastante sencilla y útil en muchos casos.

Si tienes cualquier duda, sugerencia o quieres simplemente saludar, por favor deja un comentario.