Estoy buscando un programador PHP que domine bien expresiones regulares.
Necesito una función en php que reciba un string y devuelva el mismo string con algunas modificaciones
string -------> |FUNCION| ---------> string
Preferentemente la función debería usar una única llamanda a la función preg_replace, con una única regla que haga los reemplazos necesarios.
Si alguien propone implementarlo de otra forma, sugiero que antes me consulten como lo harían, por una cuestión de performance y de compatibilidad con el servidor en donde va a correr. Quiero estar seguro de que me vaya a funcionar en el servidro donde va a correr.
Se que con preg_replace me va a servir, con otra cosa quizá también sirva, pero por las dudas proponer y consultar antes.
ENTRADA:
---------------
La función recibe una string cuya longitud puede ir de 0 a 255 caracteres.
Llamamos a esta cadena "frase".
Dicha "frase" está formada por cualquier secuencia de "palabra" y "separador"
Para esta función una "palabra" es cualquier secuencia de "caracter_palabra"
cada "caracter_palabra" está formado por una secuencia de 1 o mas de los siguientes caracteres:
minuscula [a-z]
maysucula [A-Z]
digito [0-1]
eñe [ñÑ]
acentuados [áéíóúÁÉÍÓÚ]
dierisis [äëïöüÄËÏÖÜ]
guionbajo [_]
"separador": cualquier caracter que no sea caracter_palabra (ejemplo: espacio , ; - . etc etc)
Ejemplos frases de una palabra:
----------------------------------------------
a
1
_
el
la
año
jota
1111
m29
marzo
joya
bergantín
BERGANTÍN
safdsdafsdfsdfsad
98s7adf987sdf987sdf987sdf97
_sadfw_456456
qwerty
Ejemplos de frases de dos palabras:
----------------------------------------------------
el auto
belgrano 1126
martín alejando
martin-alejando
martin;alejando
-martin=")")")··ALEJANDO"=·=·"="=
0 0
Ejemplos de frases de 3 palabras:
---------------------------------------------------
12 123 1234
-12;;123--1234??
a bc bcd
Las frases pueden tener cualquier número de plabras y separadores, siempre y cuando no superen 255 caracteres de longitud.
SALIDA:
-----------
Devuelve la misma cadena de entrada pero con algunos reemplazos.
Estos reemplazos consisten en que a toda palabra cuya longitud sea de 2 o 3 caracteres se les
agrega un prefijo "XX" y un posfijo "YY", es decir que donde había "dd" queda "XXddYY"
Notese que solo agrega "XX" e "YY" a las palabras de longitudo 2 y 3,
Todo lo demás es queda tal cual está.
Es decir palabras de longitud 1, palabras de longitud mayor a 3 y separadores quedan intactos.
En la planilla adjunta hay ejemplos para mostrar como debería funcionar.
Estos mismos ejemplos serán utilizados como parte del test de aceptactión.
Si la función que se entrega trabaja bien con esas pruebas seguramente estará correcta.
La aceptación de la función incluirá estas pruebas y algunas más, estas otras pruebas serán similares y respetarán la descripción mencionada.
Creo que la descripción es clara, pero ante cualquier doda consultar, incluso pueden consultar cual sería la salida correcta para determinada entrada. Podemos agregar estos ejemplos al la aceptación.
Nota:
-------
La cadena vacía '' es una entrada válida, cuya salida es la misma cadena vacía ''
Estoy seguro de que un experto en expresiones regulares va a demorar menos en escribir la función de lo que yo demoré en documentarla y escribir este requerimineto.
Estimo que no debería demorar más de media hora en escribirla.
No la necesito en forma urgente, pero me gustaría tenerla funcionando dentro de esta semana.
Preferiría que a la hora de escogerlos ya la tengan escrita, o por lo menos que estén 100% seguros de poder resolverla.
GRACIAS
Marcos