Tehre ne semble pas être une réponse claire sur la meilleure façon de le faire.REGEX pour les liens bbcode + URL non-bbcode
J'ai quelques bbcode qui peuvent avoir des liens au format bbcode:
[url = http: //thisisalink.com] lien [/ url]
ainsi que possible copie/urls empâtées:
Je veux remplacer les deux cas, avec un lien cliquable. J'ai actuellement ce qui suit: regexs en cours d'exécution:
"/\[link=http:\/\/(.*?)\](.*?)\[\/link\]/is"
"/\[link=https:\/\/(.*?)\](.*?)\[\/link\]/is"
"/\[link=(.*?)\](.*?)\[\/link\]/is"
$URLRegex = '/(?:(?<!(\[\/link\]|\[\/link=))(\s|^))'; // No [url]-tag in front and is start of string, or has whitespace in front
$URLRegex.= '('; // Start capturing URL
$URLRegex.= '(https?|ftps?|ircs?):\/\/'; // Protocol
$URLRegex.= '\S+'; // Any non-space character
$URLRegex.= ')'; // Stop capturing URL
$URLRegex.= '(?:(?<![[:punct:]])(\s|\.?$))/i'; // Doesn't end with punctuation and is end of string, or has whitespace after
Il semble juste que je ne peux pas obtenir les deux à travailler. Dans ce cas, la dernière regex semble dissocier la première regex.
Bien sûr, cela a été documenté quelque part sur la meilleure façon d'obtenir à la fois des liens bbcode et des URL collés pour se relier sans conflit les uns avec les autres.