Convertir en texte brut Url en liens hypertexte HTML en PHP
J'ai un simple système de commentaires où les gens peuvent soumettre des liens hypertextes à l'intérieur de la plaine du champ de texte. Quand je l'affichage de ces enregistrements de la base de données et dans la page web, ce qui RegExp en PHP puis-je utiliser pour convertir ces liens en HTML de type ancre des liens?
Je ne veux pas l'algorithme de le faire avec tout autre type de lien, http et https.
- Un de moins ou de plus de question semblable a été posée aujourd'hui: stackoverflow.com/questions/1959062/...
- Voir la question: * stackoverflow.com/questions/1188129/...
Vous devez vous connecter pour publier un commentaire.
Ici est une autre solution, Cela va attraper tous http/https/www et de le convertir en liens cliquables.
Sinon pour juste attraper http/https, utilisez le code ci-dessous.
EDIT:
Le script ci-dessous va attraper toutes les url de types et de les convertir en liens cliquables.
Nouvelle mise à jour, Si vous éprouvez de la chaîne de la bande (s) puis utiliser le code ci-dessous bloc, Grâce à @AndrewEllis pour le rappeler.
Voici une solution très simple pour l'URL ne s'affiche pas correctement.
Il est très simple à fixer, mais vous aurez à le modifier pour votre propre usage.
$url = '@(http(s)?)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
. Avis de la pose de la première(s)?
. Comment vous avait à l'origine il se brise sur des domaines tels que l' "superawesome.com" en le convertissant en "uperaswesome.com".href=""
valeur de couper le "s": gist.github.com/ellisio/1c6da4c8b3fa401d9ac66da9a3a20ce2Thanks.okay
tourner vers un lien merci.ok[email protected]
est converti à l'email@example.com (c'est à dire "email@" n'est pas inclus dans le lien).$string = "some text [email protected] some text"
(ftp|http(s|)...)
click here (http://myweb.com/file.txt)
, la solution récupèrehttp://myweb.com/file.txt)
que l'url. Aucune idée de la façon de ne pas inclure le dernier)
?Bien, Volomike la réponse est beaucoup plus proche. Et pour pousser un peu plus loin, voici ce que j'ai fait pour elle d'ignorer la fuite période à la fin des hyperliens. J'ai également considéré comme URI fragments.
preg_replace
semble la norme fonction regex maintenant.My <a href='http://example.com'>link</a> with link: http://example.com
, il y aura un supplément de conversion de<a href='http://example.com'>
en<a href='<a href='http://example.com'>http://example.com</a>'>
strip_tags()
puis effectuez les regexes.Reportez-vous http://zenverse.net/php-function-to-auto-convert-url-into-hyperlink/.
C'est la façon dont wordpress résoudre
Les plus notés réponse ne pas faire le travail pour moi, le lien suivant n'a pas été remplacé correctement:
http://www.fifa.com/worldcup/matches/round255951/match=300186487/index.html#nosticky
Après quelques recherches sur google et de certains tests, c'est ce que je suis venu avec:
Je ne suis pas un expert en regex, en fait c'est assez me confond 🙂
Alors n'hésitez pas à commenter et à améliorer cette solution.
La réponse de MkVal fonctionne, mais dans le cas que nous avons déjà à l'ancre du lien, il va rendre le texte dans bizarre format.
Voici la solution qui fonctionne pour moi dans les deux cas:
Voici mon code pour le format de tous les liens à l'intérieur du texte, y compris les courriels, les url avec et sans protocole.
S'il vous plaît commentaire l'url qui ne fonctionne pas. Je vais essayer de mettre à jour les regex.
Je recommande de ne pas faire beaucoup de choses sur la mouche comme ça. Je préfère utiliser la simple interface de l'éditeur comme celui utilisé dans stackoverflow. Il est appelé Markdown.
http://stackoverflow.com
(stackoverflow.com).Je suis en utilisant une fonction qui proviennent de question2answer, il accepte de texte, et même de la plaine des liens de texte en html:
Un peu plus de code, en raison d'accepter des liens qui détiennent des supports et d'autres personnages, mais probablement que ça aide.
Essayez celui-ci:
Il ignore les liens existants (si nous avons déjà un href, il ne sera pas ajouter a href intérieur d'un href). Sinon, il va ajouter de la a href vierges cible.
Résultat:
Ce que j'aime dans cette solution, c'est qu'il convertit également
www.example.com
àhttp://www.example.com
parce que<a href="www.example.com"></a>
ne fonctionne pas (sanshttp/https
protocole, les points deyourdomain.com/www.example.com
).Si suis de droite, ce que vous voulez faire est de mettre du texte ordinaire en http liens. Voici ce que je pense peut aider: