Autor Zpráva
milbr
Profil *
Pěkný den,
chtěl bych vás poprosit, je možné když do textu dám http://www.... aby byl odkaz v prohlížeči kliknutelný? Nějakým způsobem v PHP doplnit
a

Moc děkuji Milan
Radek9
Profil
$text = preg_replace("/(http[s]?:\/\/[^<> \n]+?)/i", '<a href="\\1" target="_blank">\\1</a>', $text);
milbr
Profil *
Moc díky za rychlou pomoc a pěknej víkend
milbr
Profil *
Radek9:
Tak jsem to vyzkoušel ale je kliknutelné např z http://www.neco....cz pouze htt://w
Ještě jednou díky Milan
Radek9
Profil
milbr:
No to nevím co s tím máte. Já když jsem to zkoušel,tak to pouze htt:// nebralo.
milbr
Profil *
Radek9:
Část kódu vypadá takto:
 
        {
        while ($data_left=MySQL_Fetch_Array($obsah_left)):
         $textleft = nl2br($data_left['text']);
         $text_info = preg_replace("/(http[s]?:\/\/[^<> \n]+?)/i", '<a href="\\1" target="_blank">\\1</a>', $textleft);
      
        echo "
              <p style=\"margin-bottom: 18px;\">
                 <strong>".$data_left['textnadpis']."</strong>
                 $text_info             
              </p>
             ";
        endwhile;
          };                     
Slim12
Profil *
Když znate php tak proč pomoci regularnich výrazu nenapišete to co potrebujete.
AM_
Profil
Slim12:
děkujeme za hodnotný příspěvek, ale tazatel je zřejmě tak dobře nezná.

$text = preg_replace('~([a-z0-9]+://[^\s]+)~i', '<a href="\\1" target="_blank">\\1</a>', $text);

takto by to fungovat mohlo, Radek9: tohle ti v životě nemohlo běhat, zbytečně si komplikuješ život použitím / jako delimiter, nevím, co dělal ten ungreedy kvantifikátor +? na konci, rozepisovat jen některé bílé znaky je také zbytečné. Takto je to navíc univerzální i na další protokoly (ftp, atd...). Další zbytečná komplikace je použití " místo ', pak se ve výrazu musí víc escapovat a je to nepřehledné.

Jde si s tím hrát různě, můžeš detekovat i odkazy bez protokolu začínající www., můžeš víc promakat, čím odkaz končí atd... stačí na webu hledat regulární výrazy pro odkaz.
milbr
Profil *
AM:
Tak to je paráda, funguje to a moc děkuji.
Máte pravdu že regulární výrazy moc neznám, (téměř vůbec), mohl by jste mi stručně vysvětlit tuto část kódu? (co jednotlivé znaky mají za funkci)

~([a-z0-9]+://[^\s]+)~i

Možná by to mohlo být přínosem i pro další méně zkušený.

Ještě jednou moc dík Milan

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0