pilots Posted April 6, 2010 Report Share Posted April 6, 2010 <?php $in=array('`((?:https?|ftp)://\S+[[:alnum:]]/?)`si', '`((?<!//)(www\.\S+[[:alnum:]]/?))`si'); $out=array('<a href="$1" rel="nofollow">$1</a> ', '<a href="http://$1" rel="nofollow">$1</a>'); $txt = preg_replace($in,$out,$txt); ?> Vai šāds variants ir ok vai tomēr ir kādi mīnusi, kas būtu labojami? Quote Link to comment Share on other sites More sharing options...
anonīms Posted April 6, 2010 Report Share Posted April 6, 2010 Man uz pc metājas, kas tāds. Drošvien viņa blogā ar ir. // (c) defektologos.lv function plain2click($str){ $str = preg_replace_callback("/(http(s)?\:\/\/|www\.)[a-z0-9\-\.]+\.[a-z]{2,4}(\/[a-z0-9\-\?=_&\+%#@\.\/]*)?/i", 'plain2clickCallback', $str); $str = preg_replace("/[a-z0-9\-\._]+@[a-z0-9\-\.]+\.[a-z]{2,4}/i", '<a href="mailto:$0">$0</a>', $str); return $str; } function plain2clickCallback($matches){ $ymatches = array(); $url = str_replace(array('http://', 'https://'), '', $matches[0]); return '<a rel="nofollow" href="http'.$matches[2].'://'.$url.'" onclick="window.open(this.href); return false;">'.$matches[0].'</a>'; } Quote Link to comment Share on other sites More sharing options...
pilots Posted April 6, 2010 Author Report Share Posted April 6, 2010 Redz, lieta tāda, ka es no šiem preg_replace neko lāga nesaprotu, tad man tā grūtāk saprast, kurš variants labāks tieši tai php ziņā. (mailus nevajag konvertēt, jaunus logus ar nevajag) Vai mans patreizējais variants ir uzlabojams vai ir ok kā ir.. būtu interesanti uzzināt, ja lasa kāds, kurš šo lietu saprot. Quote Link to comment Share on other sites More sharing options...
marcis Posted April 7, 2010 Report Share Posted April 7, 2010 Ar šitādu vajadzētu būt ok (testēts gan netika...) preg_replace('/(http(s)?\:\/\/|(www\.))([a-z0-9\.\-]+\.[a-z]{2,4}((\/|\?)[a-z0-9\-\?=_&\+%#@\.\/]*)?)/', '<a href="http$2://$3$4">$0</a>', $str); Quote Link to comment Share on other sites More sharing options...
pilots Posted April 11, 2010 Author Report Share Posted April 11, 2010 Tā arī neviens pa tēmu neatbildēja.. :) Quote Link to comment Share on other sites More sharing options...
marcis Posted April 11, 2010 Report Share Posted April 11, 2010 Pirmajā postā redzamais regex izskatās bišķ par īsu, jo matcho tikai uz protokolu un domainu, bez path un GET parametriem. Protams, ja tas ir tas, kas tev vajadzīgs, tad der :) Arī ja nav teorētisku zināšanu, tad vienmēr var patestēt kā dabā uzvedās konkrētais kods un izdomāt pats vai būs gana labs :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.