Detectar puntuación y repetirla por separado

Quiero detectar puntuación (!@#$%^&*()?<>"';:}{][) en cualquier lugar de una cadena (delante o detrás de la cadena)...

$string = "'Hello!'";
$anotherstring = "Hi";

Quiero que grabe la puntuación en $string y repítelo con $anotherstring...

Hola
'¡Hola!'

En realidad, estoy haciendo un corrector ortográfico y el problema es que verifica la cadena con la puntuación. Quiero verificarla sin la puntuación y hacer eco de la puntuación anterior antes de las sugerencias y la puntuación posterior después de las sugerencias...

preguntado el 12 de junio de 12 a las 13:06

¿Corrector ortográfico o corrector gramatical? -

2 Respuestas

Esto tal vez sea un truco sucio :)

$anotherstring = preg_replace('/[a-zA-Z0-9]+/', $anotherstring, $string);

EDITAR: puede eliminar los dígitos si no los necesita

Respondido el 12 de junio de 12 a las 13:06

¿Funcionará si la puntuación está en ambos lados? @Mirko Akkov- Shahbaz Singh

Pero, ¿qué pasa si quiero hacer eco de la puntuación anterior antes de las sugerencias y la puntuación posterior después de las sugerencias... @Mirko Akkov - Shahbaz Singh

Puedes hacerlo así: $cleanstring = preg_replace('/[^a-zA-Z0-9]/', '', $string); - Mirko Akov

Echa un vistazo a http://us3.php.net/manual/en/function.strtok.php

Puede dividir en función de tokens como espacios y símbolos.

Respondido el 12 de junio de 12 a las 13:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.