Hallo
Ik heb een tekst waarin men een url kan typen, bijvoorbeeld : dit is een www.google.be voorbeeld
Die link wil ik dan met PHP aanklikbaar maken wat op zich niet moeilijk is met dank aan Google.
Nu had ik het graag zo gemaakt dat alle externe domeinen een target="_blank" toevoeging krijgen.Code:$pattern = '@(http(s)?://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@'; echo preg_replace($pattern, '<a href="http$2://$3">$0</a>', $text);
Alle domeinen binnen dezelfde website krijgen een hyperlink zonder BLANK. Hoe kan dat best gedaan worden?
Ik veronderstel dat de bovenstaande code al juist is voor links zonder BLANK.
Alvast bedankt
Wesley
- PHP > url naar hyperlink omzetten
-
26-06-2018, 15:08 #1
- Berichten
- 940
- Lid sinds
- 15 Jaar
PHP > url naar hyperlink omzetten
-
-
26-06-2018, 16:52 #2gast74241 Guest
Re: PHP > url naar hyperlink omzetten
Je zou het script van deze Wordpress plugin kunnen bekijken, daarin zit een code die ervoor zorgt dat externe links openen in een nieuw tabblad.
-
26-06-2018, 17:08 #3
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: PHP > url naar hyperlink omzetten
Bedankt maar dit is precies niet helemaal wat ik zoek ?
-
26-06-2018, 18:02 #4
- Berichten
- 1.735
- Lid sinds
- 17 Jaar
Re: PHP > url naar hyperlink omzetten
-
26-06-2018, 19:25 #5gast74241 Guest
-
27-06-2018, 08:47 #6
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: PHP > url naar hyperlink omzetten
Het omvormen naar een link lukt met mijn bovenstaande code.
het probleem is dat ik soms TARGET="_BLANK" moet toevoegen en soms niet.
Linkt men naar een pagina binnen dezelfde website, dan is het zonder BLANK.
Linkt men naar een pagina buiten de website, dan komt automatisch BLANK erbij.
Ik zie niet hoe ik dat zo optimaal mogelijk kan schrijven ? :-)
-
27-06-2018, 08:49 #7
- Berichten
- 457
- Lid sinds
- 18 Jaar
Re: PHP > url naar hyperlink omzetten
http://php.net/preg_replace_callback gaat je hierbij helpen. In de callback checken of het intern of extern is.
Laatst aangepast door Matthijs Huisman : 27-06-2018 om 08:56
-
27-06-2018, 09:40 #8
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: PHP > url naar hyperlink omzetten
http://php.net/preg_replace_callback gaat je hierbij helpen. In de callback checken of het intern of extern is.
Code:$text = "www.google.com <br /> www.mijndomein.com <br /> www.mijndomein.com/abc"; function link_external($matches){ $pattern = '@(http(s)?://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@'; return $product_text = preg_replace($pattern, '<a href="http$2://$3" target="_blank">$0</a>', $matches[0]); } $text = preg_replace_callback("|www.google.com|", "link_external", $text); function link_internal($matches){ $pattern = '@(http(s)?://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@'; return $product_text = preg_replace($pattern, '<a href="http$2://$3">$0</a>', $matches[0]); } echo preg_replace_callback("|www.mijndomein.com|", "link_internal", $text);
De derde waar /abc bij staat werkt niet ... ik heb weinig ervaring met deze reguliere expressies.
Ik heb ook het gevoel met ik het een stuk korter kan maken in plaats van 2 callbacks uit te voeren?
-
27-06-2018, 09:53 #9
- Berichten
- 457
- Lid sinds
- 18 Jaar
Re: PHP > url naar hyperlink omzetten
PHP Code:preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', 'match_urls', $string );
function match_urls($match) {
if( check hier of de url je eigen domein is, dan return) {
return '<a href="'.$match.'">'.$match.'</a>';
} else {
return '<a href="'.$match.'" target="_blank">'.$match.'</a>';
}
}
-
27-06-2018, 09:59 #10
- Berichten
- 5
- Lid sinds
- 7 Jaar
Re: PHP > url naar hyperlink omzetten
PHP Code:preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', 'match_urls', $string );
$YourDomain = 'www.hierjouwdomein.nl';
function match_urls($match) {
if(strpos($match,$YourDomain)) {
return '<a href="'.$match.'">'.$match.'</a>';
} else {
return '<a href="'.$match.'" target="_blank">'.$match.'</a>';
}
}
-
27-06-2018, 10:05 #11
- Berichten
- 457
- Lid sinds
- 18 Jaar
Re: PHP > url naar hyperlink omzetten
Als ik daar als url invoer: https://www.mijnwebsite.nl?bla=www.hierjouwdomein.nl dan werkt dat ook. Dus wellicht nog even een regex toevoegen of het domein het beginpunt is.
-
27-06-2018, 11:00 #12
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: PHP > url naar hyperlink omzetten
Momenteel heb ik dit copy/paste gedaan :
Code:$string = "tekst www.google.com tekst<br />tekst www.hierjouwdomein.nl tekst<br />tekst www.hierjouwdomein.nl/abc tekst<br />tekst https://www.mijnwebsite.nl?bla=www.hierjouwdomein.nl tekst"; echo preg_replace_callback( '|^\s*(https?://[^\s"]+)\s*$|im', 'match_urls', $string ); $YourDomain = 'www.hierjouwdomein.nl'; function match_urls($match) { if(strpos($match,$YourDomain)) { return '<a href="'.$match.'">'.$match.'</a>'; } else { return '<a href="'.$match.'" target="_blank">'.$match.'</a>'; } }
Hier slaag ik er niet in om ze aanklikbaar te maken? Volgens mij zitten we heel dicht bij wat ik nodig heb.
Hou er ook rekening mee dat wanneer een url op het einde van de tekst staat het kan eindigen op.
TEKST WWW.DOMEINNAAM.NL. ( dubbele punt op het einde dus .NL. )
Iemand nog een suggestie om het af te werken? :-)
-
27-06-2018, 11:08 #13
- Berichten
- 390
- Lid sinds
- 16 Jaar
Re: PHP > url naar hyperlink omzetten
Das best een leuke snippet ;)
Maar dan zou hij zo zijn:
PHP Code:$text = "ik zoek altijd eerst op google.nl" ;
$pattern = '@(http(s)?://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@';
echo preg_replace($pattern, '<a target="_blank" href="http$2://$3">$0</a>', $text);
Als je meerdere urls hebt dan kan je het twee keer doen..
PHP Code:$mijndomein = 'sitedeals.nl';
$text = "ik zoek altijd eerst op google.nl voor dat ik op sitedeals.nl een vraag post.";
$pattern_intern = '@(http(s)?://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])?('.$mijndomein.')@';
$pattern_extern = '@(http(s)?://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])+(?:href)@';
$text = preg_replace($pattern_intern, '<a href="http$2://$3">$0</a>', $text);
$text = preg_replace($pattern_extern, '<a target="_blank" href="http$2://$3">$0</a>', $text);
echo $text;
Alleen is de (?:href) niet juist.
misschien dat jij de juiste regex kan vinden voor "if href is not in string" dan preg_replace. Ik kon hem niet vinden in ieder geval.
- https://stackoverflow.com/questions/...contain-a-word
- https://regexr.com/
Het probleem zit hem erin als je twee urls in je tekst hebt, en dus een met "_blank" en een zonder "_blank" moet toepassen.Laatst aangepast door nick foster : 27-06-2018 om 11:14
-
27-06-2018, 11:22 #14
- Berichten
- 457
- Lid sinds
- 18 Jaar
Re: PHP > url naar hyperlink omzetten
PHP Code:$string = "tekst www.google.com tekst<br />tekst www.hierjouwdomein.nl tekst<br />tekst www.hierjouwdomein.nl/abc tekst<br />tekst https://www.mijnwebsite.nl?bla=www.hierjouwdomein.nl tekst";
echo preg_replace_callback("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", function ($matches) {
foreach ($matches as $match) {
$url = (!preg_match('~^(?:f|ht)tps?://~i', $match) ? 'http://'.$match : $match);
if (strpos($match, 'hierjouwdomein.nl')) {
return '<a href="' . $url . '">' . $match . '</a>';
} else {
return '<a href="' . $url . '" target="_blank">' . $match . '</a>';
}
}
}, $string);
-
27-06-2018, 14:18 #15
- Berichten
- 940
- Lid sinds
- 15 Jaar
Re: PHP > url naar hyperlink omzetten
@ Matthijs Huisman
Volgens mij is dit volledig wat ik zoek!
Ik heb enkele voorbeelden geprobeerd en die lijken te werken.
Dat die laatste geen BLANK krijgt is voor mij gerust verwaarloosbaar, gebeurt niet vaak.
Oorspronkelijk was alles zonder BLANK maar wil personen zo lang mogelijk de site open laten houden.
Top! Bedankt voor de hulp, ik kan weer verder! :-)
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic