2010-11-22 9 views
5

Quiero generar la cadena como una URL amigable para SEO. Quiero eliminar ese espacio en blanco múltiple, reemplazar el espacio individual por un guión (-), luego strtolower y no se deben permitir caracteres especiales.¿Cómo reemplazar uno o más espacios consecutivos con un solo carácter?

por eso estoy actualmente el código como el siguiente:

$string = htmlspecialchars("This Is The String"); 
$string = strtolower(str_replace(htmlspecialchars((' ', '-', $string))); 

El código anterior generará múltiples guiones. Quiero eliminar ese espacio múltiple y reemplazarlo con un solo espacio. En resumen, estoy tratando de lograr la URL amigable con SEO como una cadena. ¿Cómo lo hago?

+0

Relacionados: http://stackoverflow.com/questions/741553/how-can-i-convert-two-or-more-dashes-to-singles-and-remove-all-dashes-at-the-begi , http://stackoverflow.com/questions/4051889/regular-expression-any-text-to-url-friendly-one, et al. – Gumbo

Respuesta

18

Puede utilizar preg_replace para reemplazar cualquier secuencia de caracteres de espacio en blanco con un guión ...

$string = preg_replace('/\s+/', '-', $string); 
  • Las barras exteriores son delimitadores para el patrón - que acaba de marcar el lugar donde el patrón comienza y termina
  • \ s coincide con whitespace character
  • + provoca el elemento anterior en match 1 or more times. Por defecto, esto es 'codicioso' por lo que se comerá tantas coincidencias consecutivas como sea posible.
  • Consulte la página del manual sobre PCRE syntax para más detalles
+0

gracias por la respuesta, agradecería que me explicara qué hace realmente el primer parámetro en la función. –

+1

gracias Paul, lo tengo. Debo estudiar más sobre la expresión regular. –

+0

Gran respuesta Paul. ¿Puedo preguntar, cómo se combinan 2 o más espacios? –

0
echo preg_replace('~(\s+)~', '-', $yourString); 
0

Lo que se quiere es "slugify" una cadena. Pruebe una búsqueda en SO o google en "php slugify" o "php slug".

+0

Está buscando una respuesta en stackoverflow. Google no es una respuesta. -1 – ALH

Cuestiones relacionadas