Ik gebruik de volgende regex om een URL op te sporen:
Deze heeft het probleem dat hij geen urls vervangt die na een <enter> komen, vreemd want ik gebruik toch een \n aan het begin??
Als ik het begin van de regex, (\s|\r|\n), vervang door (\b), is het bovenstaande probleem opgelost:
Alleen nu worden ook de urls vervangen die beginnen met een v/d volgende tekens: "{}[]()^$.|*+?\".
Weet iemand hoe ik het effect van de \b modifier bereik, maar dan zonder de "rare" tekens?
PHP:
1
2
3
| $msg = preg_replace("/(\s|\r|\n)((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)\b/si", "<a href=\"http\\4://\\5\\6\\7\" target=_blank>\\3\\5\\6\\7</a>", $msg); |
Deze heeft het probleem dat hij geen urls vervangt die na een <enter> komen, vreemd want ik gebruik toch een \n aan het begin??
Als ik het begin van de regex, (\s|\r|\n), vervang door (\b), is het bovenstaande probleem opgelost:
PHP:
1
2
3
| $msg = preg_replace("/(\b)((http(s?):\/\/)|(www\.))([\w\.]+)([\/\w+\.]+)\b/si", "<a href=\"http\\4://\\5\\6\\7\" target=_blank>\\3\\5\\6\\7</a>", $msg); |
Alleen nu worden ook de urls vervangen die beginnen met een v/d volgende tekens: "{}[]()^$.|*+?\".
Weet iemand hoe ik het effect van de \b modifier bereik, maar dan zonder de "rare" tekens?