Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    get_contents e urlreplace

    Ciao a tutti sono nuova e discretamente imbranata
    (intanto non trovo la sezione welcome.. se c'e' indicatemela che vado subito a presentarmi)

    Sto disperatamente cercando di capire il php.....
    qualcosina la acchiappo, altra no.....
    Per una questione troppo complessa da spiegare, devo inserire un testo in una pagina web attraverso questo comando php

    <?php
    $str= file_get_contents("Text.txt");
    $str = nl2br($str, true); // for XHMTL (in other words
    ). Use false for
    . i.e $str = nl2br($str, false);
    echo $str;
    ?>

    che richiama il testo di un file txt e lo ficca nella pagina web.
    Funziona benissimo e riesco persino a formattarlo con font colore eccetera ma vorrei che se nel txt io digito anche una cosa tipo http://www.nomesito.ext/ questo mi diventi cliccabile e ora come ora non lo fa ovviamente.
    e nemmeno so se seguira' le regole del mio css

    Io ho trovato questo script

    <?php
    // The Regular Expression filter
    $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

    // The Text you want to filter for urls
    $text = "The text you want to filter goes here. http://google.com/";

    // Check if there is a url in the text
    if(preg_match($reg_exUrl, $text, $url)) {

    // make the urls hyper links
    echo preg_replace($reg_exUrl, ''.$url[0].'', $text);

    } else {

    // if no urls in the text just return the text
    echo $text;

    }
    ?>

    che invece trasforma in link quello che c'e' fra le virgolette della stringa $text = "The text you want to filter goes here. http://google.com/";
    se incomincia per http://

    c'e' un sistema per fondere i due comandi in modo che lo script che trasforma il testo in link funzioni sulla parte di testo inserita con get_contents?

    oppure banalmente devo scrivere tipo [ url ]http://www.nomesito.ext/[ /url ] o roba simile?
    vorrei evitare di dover scrivere proprio <a href eccetera> link </a> poiche' il sistema non e' destinato a me ma A MIO PADRE

    tenete presente che il testo al massimo conterra' UN URL non diecimila.....
    e che non posso usare database


    ho trovato anche questo altro comando
    function urlreplace($str){
    $str = preg_replace ('(([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+))', '<a target=\'_blank\' href=\'http://$1.$2\'>$1.$2</a>', $str);
    return str_replace("http://http://","http://",$str);

    che mi sembra piu' semplice, aprirebbe il link in una nuova pagina da quello che capisco (cosa che mi interessa) anche se si limita alle cose che iniziano per HTTP ignorando altri incipit.....ma non so come integrarlo nel primo script ne' se funziona

    Grazie in ogni caso...

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Codice PHP:
    // The Regular Expression filter

    function creaUrl($text){

        
    $reg_exUrl "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";

        
    // Check if there is a url in the text
        
    if(preg_match($reg_exUrl$text$url)) {
            
    // make the urls hyper links
            
    return preg_replace($reg_exUrl'[url="'.$url[0].'"]'.$url[0].'[/url]'$text);

        } else {
            
    // if no urls in the text just return the text
            
    return $text;
        }
    }

    $strfile_get_contents("Text.txt");
    $str creaUrl(nl2br($str)); // il secondo parametro di nl2br puoi ometterlo tanto è comunque true di default
    echo $str
    così dovrebbe andare .... certo che per iniziare a capire il php sei partita dalla cosa più complicata (le espressioni regolari) ..... però se non ti arrendi iniziare dalle cose più difficili a volte è la strada migliore

    buon lavoro


  3. #3
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    scusa non avevo visto la seconda funzione che è nettamente meglio della prima, quindi rettifico e ti consiglio di usare lo script così:

    Codice PHP:
    // The Regular Expression filter

    function urlreplace($str){
       
    $str preg_replace ("(([:/~a-zA-Z0-9_\-\.]+)\.([:/~a-zA-Z0-9]+))""[url='http://$1.$2']$1.$2[/url]"$str);
       return 
    str_replace("http://http://","http://",$str);
    }

    $strfile_get_contents("Text.txt");
    $str urlreplace(nl2br($str)); // il secondo parametro puoi ometterlo tanto è comunque true di default
    echo $str

  4. #4
    GRAZIE

    e te pareva che non partivo dal fondo

    Cmq ora confrontando come hai assembrato gli script singoli magari la nebbia mi si dirada un po'!!!!

    Ed e' una bella soddisfazione avere cmq trovato gli script giusti.
    Mi aspettavo che mi metteste del codice totalmente nuovo...
    Cosi' invece posso imparare qualcosina

    Grazie mille grazie grazie.

    Ora devo mettere RISOLTO nel titolo e non so come si fa......

    Mi applico

    EDIT

    come non detto

    li ho provati entrambi ma con il primo mi da
    Warning: preg_match() [function.preg-match]: Unknown modifier '/' in (link del mio php) on line 28
    che credo sia questa
    if(preg_match($reg_exUrl, $text, $url)) {

    poi mi scrive il testo del file txt senza linkarmi l'url



    e il secondo mi da
    Warning: preg_replace() [function.preg-replace]: Compilation failed: range out of order in character class at offset 16 in (link del mio php) on line 24
    che credo sia questa
    $str = preg_replace ("(([:/~a-zA-Z0-9_-.]+).([:/~a-zA-Z0-9]+))", "$1.$2", $str);

    e non mi scrive nemmeno il testo del file txt


    se puo' servire copio e incollo tutta la sorgente del file tanto per adesso non c'e' ancora quasi nulla dentro

    intanto vi metto cosa c'e' nel file TXT... che magari e' importante

    ciao ciao ciao
    saluti

    http://www.nomesito.ext

    e' fatto per testare la riga con l'accapo, e poi il link

    EDIT2

    forse se ci capisco ....
    l'istruzione $1.$2 rimanderebbe a un database su txt che di fatto non ho....
    ho un testo normalissimo all'interno del quale si dovrebbe individuare in un punto qualunque un url da rendere cliccabile....

    invece nel primo.. manca una / ????

    scusate ma cerco anche di capire oltre che copiare e incollare... scusate ancora

  5. #5
    Mi scuso per il doppio post ma non riesco piu' a modificare il precedente....

    intanto ho "fuso" il primo script di individuazione url con il secomdo per avere la apertura della paginas separata e FUNZIONA

    codice:
    // The Regular Expression filter 
    $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
    // The Text you want to filter for urls $text = "The text you want to filter goes here. http:/ /google. com/"; 
    // Check if there is a url in the text 
    if(preg_match($reg_exUrl, $text, $url)) { 
    // make the urls hyper links 
    echo preg_replace($reg_exUrl, ''.$url[0].'', $text); } else { 
    // if no urls in the text just return the text 
    echo $text; }
    e ho anche imparato a mettere i codici nel riquadro azzurro

    ora questo script per l'url e' corretto
    ma prevede che il resto sia scritto nelle virgolette della riga
    $text = "The text you want to filter goes here. http://google.com/";
    e non c'e' verso di fargli fare lo scan del txt separato


    invece il secondo script di individuazione url non so nemmeno come testarlo da solo per capirne il funzionamento prima della modifica.
    Cmq non mi carica il txt separato.. proprio no

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    9
    Prova con questo:
    Codice PHP:
    <?php
    $contenuto
    file_get_contents("Text.txt");
    $contenuto str_replace("\r\n"'
    '
    $contenuto);

    function 
    makeClickableLinks($text) {
      
    $text eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
        
    '[url="\\1"]\\1[/url]'$text);
      
    $text eregi_replace('([[:space:]()[{}])([url]www.[/url][-a-zA-Z0-9@:%_\+.~#?&//=]+)',
        
    '\\1[url="http://\\2"]\\2[/url]'$text);
      
    $text eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
        
    '[email="\\1"]\\1[/email]'$text);
    return 
    $text;}
    echo 
    makeClickableLinks($contenuto);
    ?>

  7. #7
    CLA


    si questo funziona




    un grazie a tutti e anche a LAS che per primo mi ha risposto

    Ora studio bene bene il codice

    devo capirlo oltre che usarlo....E' piu' forte di me

    UN bacio a tutti

    UNA ULTIMA COSA scusate....

    non so perche'... ma la riga che da istruzioni al MAILTO mi fa finire il link e il testo visualizzato con un /> solo soletto e quindi risulta cliccabile tutto il testo che viene dopo se ce ne scrivo......

    le altre funzioni sono perfette

    Ci sto lavorando.
    Se riesco alla fine posto il codice completo

    Ancora grazie

  8. #8
    Mi scuso ancora per il doppio post.

    Il problema di cui sopra lo ho eliminato aggiungendo uno spazio nel testo del txt dopo l'indirizzo email (quindi non ho toccato il codice)
    cosi' funziona anche se non capisco come mai per i link ftp e http lo spazio in fondo non serve e per la mail si....

    CMQ siete stati fantastici.

    mi sa tanto che vi disturbero' ancora

    ma non subito... riposatevi

    un abbraccio a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.