Usaremos la función preg_replace(), en cuyo primer parámetro indicaremos el patrón de caracteres para realizar la búsqueda, en el segundo parámetro la cadena de texto con la que deseamos reemplazarla, como tercer parámetro pondremos la cadena de texto en la que realizarán las operaciones, y en el cuarto parámetro el número máximo de modificaciones que se podrán realizar (si no lo indicamos, se reemplazarán todas las coincidencias encontradas):
<?php
// Cadena de caracteres:
$cadena = "gratis Cursos gratis de informática GRATIS";
// Patrones:
$patron01 = "/gratis/";
$patron02 = "/gratis/i";
echo "CADENA: [".$cadena."]<br />";
echo "Cadena modificada: [".preg_replace($patron01, "online", $cadena, 1)."]<br />";
echo "Cadena modificada: [".preg_replace($patron02, "online", $cadena)."]<br />";
?>

Recuerda que las expresiones regulares de POSIX han quedado obsoletas desde la versión de PHP 5.3.0 !!

Si compruebas que no te funcionan bien las expresiones regulares asegúrate de guardar el archivo con codificación UTF-8.

Vea también: [ preg_replace() ]
Las funciones de tipo POSIX equivalentes a la del punto anterior son ereg_replace() (diferencia entre mayúsculas y minúsculas) y eregi_replace() (no distingue entre mayúsculas y minúsculas) las cuales devuelven la cadena modificada (en caso de haberse realizado cambios en la misma) o bien sin modificar (de no haberse encontrado coincidencias):
<?php
// Cadena de caracteres:
$cadena = "gratis Cursos gratis de informática GRATIS";
// Patrones:
$patron01 = "gratis";
$patron02 = "gratis";
echo "CADENA: [".$cadena."]<br />";
echo "Cadena modificada: [".ereg_replace($patron01, "online", $cadena)."]<br />";
echo "Cadena modificada: [".eregi_replace($patron02, "online", $cadena)."]<br />";
?>

Recuerda que las expresiones regulares de tipo POSIX han quedado obsoletas desde la versión de PHP 5.3.0 !!

Si compruebas que no te funcionan bien las expresiones regulares asegúrate de guardar el archivo con codificación UTF-8.

Vea también: [ ereg_replace() ] - [ eregi_replace() ] - [ Reemplazar en una cadena sin usar expresiones regulares ]
<?php
$cadena = " Curso de Informática gratis - ";
$patronInicio = "/^\s*/";
$patronFin = "/\s*$/";
$cadena = preg_replace( $patronInicio, "", $cadena );
$cadena = preg_replace( $patronFin, "", $cadena );
echo "[".$cadena."]"; // Devuelve: "[Curso de Informática gratis -]"
?>

Recuerda que las expresiones regulares de tipo POSIX han quedado obsoletas desde la versión de PHP 5.3.0 !!

Si compruebas que no te funcionan bien las expresiones regulares asegúrate de guardar el archivo con codificación UTF-8.

Vea también: [ preg_replace() ]
<?php
$cadena = " Curso de Informática gratis - ";
$patronInicio = "^ *";
$patronFin = " *$";
$cadena = ereg_replace( $patronInicio, "", $cadena );
$cadena = ereg_replace( $patronFin, "", $cadena );
echo "[".$cadena."]"; // Devuelve: "[Curso de Informática gratis -]"
?>

Recuerda que las expresiones regulares de tipo POSIX han quedado obsoletas desde la versión de PHP 5.3.0 !!

Si compruebas que no te funcionan bien las expresiones regulares asegúrate de guardar el archivo con codificación UTF-8.

Vea también: [ ereg_replace() ]
Expresiones regulares en PHP de tipo PCRE que pueden resultarte útiles:
<?php
$patron01 = "/^[0-9]{3}\-[0-9]{3}\-[0-9]{3}$/"; // Teléfono
$patron02 = "/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\-[a-zA-Z]$/"; // NIF
$patron13 = "/^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,4}$/i"; // E-Mail:
$patron04 = "/^\d{2}\/\d{2}\/\d{4}$/"; // Fecha en formato 'dd/mm/yyyy'
$patron05 = "/^gratis$/"; // La cadena es exáctamente 'gratis' en minúsculas
$patron06 = "/gratis/"; // La cadena contiene 'gratis' en minúsculas
$patron07 = "/gratis/i"; // La cadena contiene 'gratis', en mayúsculas o minúsculas
$patron08 = "/^[a-zA-Z\s]+$/"; // Sólo letras en mayúsculas/minúsculas, y espacios
$patron09 = "/^[0-9]+$/"; // Sólo números. No se admite cadena vacía
$patron10 = "/^[0-9]*$/"; // Sólo cadena vacía o números
// Sólo letras en mayúsculas/minúsculas incluídas con tilde (no 'ñ' ni 'Ñ'), espacios y comillas simples. No admite cadena vacía:
$patron11 = "/^[a-zA-ZáéíóúÁÉÍÓÚ]+$/";
// Sólo letras en mayúsculas/minúsculas, acentuadas, con espacios y comillas simples. No admite cadena vacía:
$patron12 = "/^[a-zA-ZáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙñÑ\s\']+$/";
// Sólo cadenas vacías, o con números y/o letras en mayúsculas/minúsculas acentuadas,
// También espacios, comillas simples, dos puntos, puntos, comas, punto y coma y guiones:
$patron13 = "/^[0-9a-zA-ZáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙñÑ\s\'\:\.\,\;-]*$/";
// Sólo números y letras en mayúsculas/minúsculas acentuadas. No admite cadena vacía:
$patron14 = "/^[0-9a-zA-ZáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙñÑ]+$/";
// Sólo números, letras en mayúsculas/minúsculas acentuadas, y espacios. No admite cadena vacía:
$patron15 = "/^[0-9a-zA-ZáéíóúÁÉÍÓÚäëïöüÄËÏÖÜàèìòùÀÈÌÒÙñÑ\s]+$/";
?>

Recuerda que las expresiones regulares de tipo POSIX han quedado obsoletas desde la versión de PHP 5.3.0 !!

Si compruebas que no te funcionan bien las expresiones regulares asegúrate de guardar el archivo con codificación UTF-8.