Ok, he hecho esta función que funciona bien para convertir la mayoría de las URL como pies.com o www.cakes.com a una etiqueta de enlace real.help with regex - ¿Cómo puedo hacer que algunas URL no sigan?
function render_hyperlinks($str){
$regex = '/(http:\/\/)?(www\.)?([a-zA-Z0-9\-_\.]+\.(com|co\.uk|org(\.uk)?|tv|biz|me)(\/[a-zA-Z0-9\-\._\?&=#\+;]+)*)/ie';
$str = preg_replace($regex,"'<a href=\"http://www.'.'$3'.'\" target=\"_blank\">'.strtolower('$3').'</a>'", $str);
return $str;
}
me gustaría actualizar esta función para añadir no-follow
etiquetas de enlaces a mis competidores,
por lo que tendría ciertas palabras clave (nombres de los competidores) para nofollow por ejemplo, si mi sitio estaba a punto de hornear yo podría desee:
no-follow any sites with the phrases 'bakingbrothers', 'mrkipling', 'lyonscakes'
es posible la implementación de esta if(contains x){ add y}
en mi expresión regular?
¿esto es lo que se llama 'lookback'?
esto se ve muy bien, sin embargo estoy teniendo problemas con caracteres, parece preg_replace_callback no acepta el modificador 'e', por lo que ahora es la captura de la 'n' formar '\ n' nuevas líneas? – Haroldo
¿Puede proporcionar un ejemplo de su cadena de entrada? Difícil de construir la expresión regular a ciegas :) –
ah fue mi error, estaba escapando dos veces de los saltos de línea, su solución funciona fantásticamente, y gracias también a Marty por su ayuda también – Haroldo