Rozpoznání odkazu?

8 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Potřeboval bych pomoc s rozpoznáním odkazu, na netu jsem našel způsob, ve kterym si text rozdělím na slova, poté následuje toto: if (EregI("^(www\..+\..{2,3})$", $slovo[$y])): //jedna se odkaz typu www...... $odkaz = EregI_Replace("^(www\..+\..[a-z])$", "<a href=\"http://\\1\">\\1</a> ", $slovo[$y]); elseif (EregI("^(http://.+\..{2,3})$", $slovo[$y])): //jedna se odkaz typu http://....... $odkaz = EregI_Replace("^(http://..+\..{2,3})$", "<a href\"=\\1\">\\1</a> ", $slovo[$y]); else: $odkaz = $slovo[$y] . " "; //jedna se o normalni slovo endif; Jede to, až na celkem zásadní věc: Když mu zadám například "http://www.webzdarma.cz/", vrátí to jako odkaz. Ale jakmile přidám cokoli za lomítko, "http://www.webzdarma.cz/forum" tak už to odkaz nepozná. Děkuji za náměty
  2. Jeden námět: máš špatné rozpoznávání odkazů (čili blbý regulár). Někde doma na to mám napsanou celkem šikovnou pidifunkci a zvládá to trošku víc než jen http: Bohužel zrovna nejsem doma (kdo by taky byl o víkendu doma, že (; ), takže pokud vydržíš ...
  3. ta návštěvní kniha (michal kebrt / interval) ze které si to vzal je naprosto šílená, hodně rychle bych se poohlédnul po lepší :) já používám pár řádků zkopírovaných z wordpressu, které mi fungují bez problémů. $text = preg_replace( array( '#([\s>])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is', '#([\s>])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is', '#([\s>])([a-z0-9\-_.]+)@([^,< \n\r]+)#i'), array( '$1<a href="$2" rel="nofollow">$2</a>', '$1<a href="http://$2" rel="nofollow">$2</a>', '$1<a href="mailto:$2(uzenáč)$3">$2(uzenáč)$3</a>'), $text );
  4. Jistě že vydržím ;-) nejdřív se podívám na Mikeho námět :-)
  5. (michal kebrt / interval) ? o čem to mluvíš?
  6. http://interval.cz/clanky/navstevni-kniha-v-php-bez-pouziti-databaze-osetreni-textu/ odtud to je, ten tvůj kód ;-)
  7. Tak tedy: function prevod_odkazu($text, $pocet=60) {  $nahrad = '!([[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/])!';  preg_match_all($nahrad, $text, $adress);  for ($i=0; $i<=count($adress[0]); $i++) {   if(strlen(@$adress[0][$i])>$pocet) $txt = substr($adress[0][$i], 0, $pocet-3).'...';   else @$odkazik = $adress[0][$i];  @$odkaz = '<a href="'.$adress[0][$i].'" title="'.$adress[0][$i].'" rel="nofollow">'.$txt.'</a>';   @$text = str_replace($adress[0][$i], $odkaz, $text);  }  return $text; } Zároveň to i skracuje text odkazu na délku uvedenou v $pocet. Btw, čas od času to házelo nějaké warningy. Nechtělo se mi to řešit standardní cestou, tak jsem tam napral "@" a už je to dobrý... :)
  8. No, děkuji :) já něco zkusím, snad to pochopím.

← Zpět na všechna témata