Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Jak aktywować linki?
julss
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.10.2006

Ostrzeżenie: (0%)
-----


Jestem w 'Przedszkolu' bo niestety nie znam się na programowaniu.
Mam gotowy kod strony.
Newsy są wgrywane na stronę przez Panel Admin (własna kreacja programisty).

Niestety w wyświetlanych Newsach linki nie są aktywne (IMG:style_emoticons/default/thumbsdownsmileyanim.gif)
Jak zmienić kod by były??

Wklejam fragment kodu:

Kod
<?php

        ob_start();
        
        include_once '../include/headers.php';
        include_once '../include/classes/mysql.class.php';
        include_once '../include/functions_de.php';
        
        print file_get_contents('../include/html/header.html');
        
        ?>

<?php
                        
                                $operation = new OperationsMySQL();
                                $operation->connect();
                                
                                if(!isset($_GET['id']))
                                
                                {
echo '<div class="small_news">';                
                $query = "SELECT id, regdate, title, info_small FROM newsesde WHERE visible = '1' AND (regdate >= '" . date('Y-m-d') . "'
OR regdate <= regdate_end AND regdate_end >= '" . date('Y-m-d') . "')  ORDER BY regdate ASC LIMIT 9";
                $operation->execute_query($query);
    
               while($row = $operation->fetch_object())                
                {
                print '<div class="top_news">' . "\n";
                        if(file_exists('../admin-news-de/news-images/' . $row->id . '.jpg'))
                        {
                        
                        print '
<div class="imgs" >
    <table height="161" align="center" width="100%">
        <tr>
            <td align="center" valign="middle" class="img_block"><img src="../admin-news-de/news-images/' . $row->id . '.jpg" alt="" /></td>
        </tr>
    </table>
</div>';
                        
                        }
                        
                        print '
                        <p class="news_date" style="margin-bottom: 10px; width: 250px;">
                        ' . date('d.m.Y', strtotime($row->regdate)) . '</p>' . "\n";
                        print '                                                
                        <p class="title_top">';
                      echo '  <a href="?id=' . $row->id . '">' . $row->title . '</a></p>';
                        
                        
                        print '                                        
                        </div>' . "\n";
                        
                        $last_date = $row -> regdate;
                }
                
             $operation->free_result();
    echo '</div>';
    
    if($last_date < date('Y-m-d')){$last_date = date('Y-m-d');}
    
                                                echo $output;
                                                print '                                        <hr id="news_line" />' . "\n";
                                                $query2 = "SELECT id, regdate, title, info_small FROM newsesde WHERE visible = '1'
AND (regdate >= '" . date('Y-m-d') . "' OR regdate <= regdate_end AND regdate_end >= '" . date('Y-m-d') . "')  ORDER BY regdate ASC LIMIT 9";
                                                $operation->execute_query($query2);
                                                
                                                print '<p style="clear: both;"></p>';
                                                print '                                        <ul class="ul_no_list ">' . "\n";
                                                $output="";
                                                $news = 0;
                                                while($row = $operation->fetch_array())
                                                {
                                                    if($news > 9){
                                                    extract($row);
                                                        $output .= '                                                        <li class="regdate">' . date('d.m.Y', strtotime($regdate)) . '</li>                                                        
<li class="title"><a href="?id=' . $id . '">' . $title . '</a></li>                                                        <li class="info_small">' . $info_small . '</li>';
                                                    }
                                                    $news++;
                                                }
                                                echo $output;
                                                print '                                                </ul>' . "\n";
                                                }
                                        else
                                        {
                                        $query = sprintf("SELECT id, regdate, title, info_small, info FROM newsesde WHERE id = '%d' AND visible = '1' LIMIT 1", mysql_real_escape_string($_GET['id']));
                                                $operation->execute_query($query);
                                                $row = $operation->fetch_object();
                                                
                                                print '<p id="news_date_p"><span class="news_date">' . date('d.m.Y', strtotime($row->regdate)) . '</span></p>' . "\n";
                                                print '                                        <p class="text_link">' . $row->title . '</p>' . "\n";
                                                print '                                        <p class="text_normal">' . nl2br($row->info) . '</p>';
                                                print '                                        <p class="back"><a href="index.php">&lt;&lt; zurück</a></p>' . "\n";
                                        }
                        
                                        ?>
Go to the top of the page
+Quote Post
patrysiek2
post
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 5
Dołączył: 8.12.2011
Skąd: Łomża

Ostrzeżenie: (0%)
-----


Jak to nie aktywne? NKPW
Go to the top of the page
+Quote Post
Ruch Radzionków
post
Post #3





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


a masz gdzies demo na jakiejś stronie żeby zobaczyć co i jak (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
julss
post
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.10.2006

Ostrzeżenie: (0%)
-----


Oto przykład:
News został wgrany razem z linkiem do forum.php.pl
Ale link nie jest aktywny...
LINK
Go to the top of the page
+Quote Post
markonix
post
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Linki same z siebie nie zrobią się aktywne, PHP wyświetla tekst, a przeglądarka nie interpretuje tego jako link (być może są jakieś co to robią).
Albo przy dodawaniu użyjesz HTML przy dodawaniu linku, albo system ma wbudowane BBC, albo możesz zrobić w PHP aby automatycznie linki były zmieniane w HTMLowe za pomocą wyrażeń regularnych.
Go to the top of the page
+Quote Post
AdIoS_Neo
post
Post #6





Grupa: Zarejestrowani
Postów: 159
Pomógł: 43
Dołączył: 8.03.2009

Ostrzeżenie: (0%)
-----


Witam,
link nie jest nieaktywny jak to określiłeś, on w ogóle nie jest linkiem tylko tekstem. W html'u link (odnośnik) wstawiamy następująco:
  1. <a href="adres_strony.html" title="tytul strony ktory pojawi sie w dymku po najechaniu na odnosnik">Wyświetlany tekst na który się klika by przejść do strony o podanym adresie</a>

Więc by zmienić napis typu http://forum.php.pl na link w Twoim przykładzie trzeba by użyć preg_replace, wyciągnąć z treści newsa wszystkie adresy i pozamieniać je na linki htmlowskie.
Go to the top of the page
+Quote Post
julss
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 17.10.2006

Ostrzeżenie: (0%)
-----


Najfajniej jakby linki stawały się aktywne automatycznie.

Jak działa ta opcja matronix?: (IMG:style_emoticons/default/smile.gif)
Cytat
możesz zrobić w PHP aby automatycznie linki były zmieniane w HTMLowe za pomocą wyrażeń regularnych.
Go to the top of the page
+Quote Post
AdIoS_Neo
post
Post #8





Grupa: Zarejestrowani
Postów: 159
Pomógł: 43
Dołączył: 8.03.2009

Ostrzeżenie: (0%)
-----


zmień
  1. nl2br($row->info)
na
  1. nl2br(preg_replace("/(http(s)?\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(\/)?)/i", '<a href="\1">\1</a>', $row->info))

zmieni Ci to linki ale tylko prowadzące do stron głównych np:
Kod
http://forum.php.pl
ale już nie dopasuje tego:
Kod
http://forum.php.pl/index.php?showtopic=200175&st=0&gopid=969547&#entry969547


Ten post edytował AdIoS_Neo 14.06.2012, 15:28:23
Go to the top of the page
+Quote Post
markonix
post
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


  1. function clickableLinks($source) {
  2.  
  3. $m = preg_match_all('/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/', $source, $match);
  4.  
  5. if ($m) {
  6. $links = $match[0];
  7. for ($j = 0; $j < $m; $j++) {
  8. if (preg_match('/http:\/\/JAKAS.STRONA.PL/i', $links[$j])) {
  9. $title = 'Link do podstrony';
  10. } else {
  11. $title = 'Link zewnętrzny!';
  12. }
  13. $source = str_replace($links[$j], '<a href="'. $links[$j] .'" title="'. $title .'">'. $links[$j] .'</a>', $source);
  14. }
  15. }
  16.  
  17. return $source;
  18.  
  19. }


JAKAS.STRONA.PL zamień na swój adres. Funkcja oprócz tego, że zamienia tekst na linki to dodatkowo do nich dokleja tytuł "link do podstrony" bądź "link zewnętrzny".
Go to the top of the page
+Quote Post
AdIoS_Neo
post
Post #10





Grupa: Zarejestrowani
Postów: 159
Pomógł: 43
Dołączył: 8.03.2009

Ostrzeżenie: (0%)
-----


@markonix: przetestuj swoje wyrażenie regularne na tym:
Kod
$zrodelko = "https://www.google.pl<p class='text_normal'>Nieaktywny link:\n\nhttp://forum.php.pl/</p><p>http://www.google.pl</p><ul><li>http://za.je.biste.pl/</li></ul> http://www.li-nk.pl/?p=24 <a href='http://test.pl/'>test</a>";


Ten post edytował AdIoS_Neo 15.06.2012, 00:44:07
Go to the top of the page
+Quote Post
markonix
post
Post #11





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Nie mam zamiaru nic testować bo
1) przyjmuje za argument tekst wyczyszczony ze znaczników HTML
2) samo wyrażenie regularne nie jest w pełni mojego autorstwa
3) jeżeli funkcja jest zawodna to zainteresowany sobie ją poprawi i dopasuje, u mnie się sprawdza na ten moment w 100%
4) podałem funkcje w celach wzorcowych, niekoniecznie żeby stosować bez zastanowienia.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 17:52