Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 31

Discussione: tag a

  1. #11
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Originariamente inviato da alcio74
    @Virus_101

    Il concetto è lo stesso dei viaggi: per andare da Milano a Roma puoi prendere la A1 oppure salire a Dusseldorf, girare per Vienna e passare per Madrid!
    Il discorso finale è anche di performance: se la stringa da controllare è lunga una quarisma, l'explode ti farà impazzire.
    Perdici tempo dietro le Regexp.
    Io ancora non le maneggio benissimo, ma non immagini neanche quanto tempo ti fanno risparmiare!
    .... o.O
    Beh questo lo dici te.
    La reg exp e' una sol come un altra, nulla da dire davvero e cmq non e' che il codice scritto con explode sia di 200 righe sono circa 8 righe in tutto.
    Per cui come puoi anche vedere te siamo sulla A1 tutti e 2.
    Dimmi dove quell'explode ti fa impazzire davvero sono curioso e' una cosa cosi' banale.

    Cmq a sto punto ti propongo una cosa

    Mettiamo a confronto i due script e vediamo con microtime quale dei 2 finisce prima dando lo stesso risultato.
    Non e' una gara e' un puro discorso di curiosita' perche' se davvero la reg exp fa prima allora a sto punto mi metto sotto ad imparare bene come funzionano.
    Ma se i tempi non discostano molto alla fine usare un a l'altra soluzione e' indifferente per questo caso.

    Che ne dici?

  2. #12
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Mi scuso in anticipo sia perche' mi sto rispondendo da solo sia per la lunghezzza dalla risp infina sia per aver usato il link a questa pagina come testo sorgente del test nella funz file_get_contents(...).
    Ho buttato giu' questo test :

    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>

    <?

    $testo 
    =file_get_contents"http://forum.html.it/forum/showthread.php?s=&postid=11992015#post11992015" );

    function 
    extractLinksXPL($testo)
    {
        
    $tokens explode("href=\"" $testo);
        
    $out = array();
        
        
        for(
    $i=$i<count($tokens) ; $i++)
        {
            
    $tmp substr$tokens[$i] , strpos($tokens[$i] , "\"" )   );
            
    array_push($out $tmp);
        }

        return 
    $out;

    }


    function 
    extractLinksREG($testo)
    {
        
    $pattern "/^(href=\"?)[[:alnum:]].[[:alnum:]]{2,4}/i";
        
    $matches ;
        
    preg_match_all($pattern,$testo,$matches);
        
    //preg_match_all("/^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}'.'((:[0-9]{1,5})?/.*)?$/i",$testo,$matches);
        ##preg_match_all("/(<([\w]+)[^>]*> )(.*)(<\/\\2> )/", $html, $matches);
        
        
    return $matches;
        
    }

    function 
    getmicrotime(){

    list(
    $usec$sec) = explode(" ",microtime());

    return ((float)
    $usec + (float)$sec);

    }


    $uno getMicrotime();
    $res extractLinksXPL($testo);
    $due getMicrotime();

    echo 
    "EXPLODE time : ".($due-$uno);
    echo 
    "
    Result "
    .count($res)." resources found

    "
    ;
    echo 
    "<div style=\"display:block; height:100px; overflow:auto\">";
    /*foreach($res as $n=>$v )
     echo $v." 
     ";
     */
     
    echo "<h1>".var_dump($res)."</h1>";
    echo 
    "</div>";

    echo 
    "<hr color=\"red\">";

    $uno getMicrotime();
    $res extractLinksREG($testo);
    $due getMicrotime();

    echo 
    "REG EXP time : ".($due-$uno);
    echo 
    "
    Result "
    .count($res)." resources found
    "
    ;

    echo 
    "<div style=\"display:block; height:100px; overflow:auto\">";

    echo 
    "<h1>".var_dump$res )."</h1>";
     
    echo 
    "</div>";
    echo 
    "<hr color=\"red\">";

    ?>
    </body>
    </html>

    E questi sono i risultati:

    Codice PHP:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    title>Documento senza titolo</title>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </
    head>

    <
    body>

    EXPLODE time 0.00181889533997
    Result 258 resources found

    <div style="display:block; height:100px; overflow:auto">array(258) {
      [
    0]=>
      
    string(34"http://rss.html.it/rss_forum39.xml"
      
    [1]=>
      
    string(57"http://utenti.html.it/common/css/forum.all.css?ver=031207"
      
    [2]=>
      
    string(9"index.php"
      
    [3]=>
      
    string(18"http://www.html.it"
      
    [4]=>
      
    string(1"#"
      
    [5]=>
      
    string(19"javascript:void(0);"
      
    [6]=>
      
    string(19"javascript:void(0);"
      
    [7]=>
      .......  
    eccetera ho troncato i link che sono davvero tanti
    }

    <
    h1></h1></div><hr color="red">REG EXP time 0.00984120368958
    Result 2 resources found
    <div style="display:block; height:100px; overflow:auto">array(2) {
      [
    0]=>
      array(
    0) {
      }
      [
    1]=>
      array(
    0) {
      }
    }
    <
    h1></h1></div><hr color="red">



    </
    body>
    </
    html
    EDIT:
    senza postare altro codice ho fatto qlke refresh della pagina per vedere i tempi
    il primo valore e' la funzionie con explode e il secondo e' con la reg exp.

    0.00224781036377
    0.000127792358398

    0.00183296203613
    0.000123977661133

    0.0021071434021
    0.000216007232666

    Effettivamente la reg exp e' una sceggi rispetto alla explode, ma non da alcun risultato. Forse ho sbalgiato io magari i ris ci sono da qlke parte ma nessun var_dump mi ha dato conferma di cio'. Forse il pattern e' sbagliato.

    Cmq alla fine vedo che 8 semplici righe di codice scritte in 30 secondi mi danno i risultati che cercavo in 0.002 sec.
    A sto punto cosa mi cambia averli in 0.002 piuttosto che NON averli in 0.0002 secondi?
    C'e' davvero bisogno di tta sta velocita'?

    Mah fate voi.

    P.S. se ho sbaglaito qlkosa nel codice php chiedo scusa lo fatto in 5 min. Magari ripetendo il test la reg exp ritorna qlkosa invece che una serie di var vuote.
    Mah. fate vobis.

    La semplicita' a volte e' una bella cosa.

  3. #13
    Vedi.... io non ho risposto per partecipare ad una qualsivoglia sfida.
    Chi ha aperto il thread ha più volte detto che non voleva usare né l'explode, né altri metodi:

    explode, strpos ecc ecc li voglio evitare
    Ti sei messo a fare benchmark per portare avanti il tuo codice, ma nessuno ti ha detto "il tuo metodo è peggiore del mio".. tanto da obbligarti ad accettare la sfida!
    Si è semplicemente discusso su quale fosse il metodo che caniggia preferiva usare. Punto.

    A riguardo del pattern usato, ho specificato:
    Se non dovesse andare la RegExp, postala di nuovo, oppure apri un nuovo thread chiedendo info per quella. Ci sono dei veri maghi delle espressioni regolari, in giro per il forum.
    Questo significava, più o meno velatamente, che l'espressione l'ho scritta di getto direttamente qui sul forum e che non l'avevo testata. Non essendo io un mago, potrebbe contenere qualche errore!

    Concludo facendo una cosiderazione circa le performance.
    Sì, hai ragione: risparmiare pochi millisecondi cambia davvero poco. Ma suppogno che questa porzione di codice faccia parte di uno script più lungo e complesso.
    Se per ogni metodo usato nello script, si evitasse di provare una ottimizzazione del codice, alla fine la pagina potrebbe essere talmente pesante da caricare (mettici anche le immagini, i testi, i CSS, gli script vari e tutto il resto) che anche pochi millisecondi, limati per ogni funzione, potrebbero davvero significare molto.

    Comunque, se anche ti fossi un po' risentito di uno dei miei precedenti post, sappi che non volevo offenderti... ma solamente trovare una soluzione più confacente a quelle che erano le aspettative di chi ha aperto il thread.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  4. #14
    ecco la funzione regolare corretta:

    Codice PHP:
    function extractLinksREG($testo)
    {
        
    $pattern "!href=\"(.*)\"!Ue";
        
    preg_match_all($pattern,$testo,$matches,PREG_PATTERN_ORDER);
        return 
    $matches[1];

    L'unica limitazione è che se hai href scritti con il singolo apice ( ' ) invece di ( " ) non te li becca, dovresti fare due funzioni...

    Nota che il risultato, dato da $matches[1] contiene quello che a te serve...
    in [0] ci sono dati che non ti interessano..
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  5. #15
    Giusto una spiegazione per chiarire perché le PCRE (PERL COMPATIBLE REGULAR EXPRESSION) sono cosi veloci e soprattutto perché sono da usare al posto di altre soluzioni.

    Come prima cosa, come potete vedere voi stessi, con una sola riga di codice (la stringa del pattern poteva essere inglobata nel codice), escludiamo il return che è presente in entrambi i sistemi, si effettua l'operazione a differenza del sistema che ha scritto Virus_101, anche se comunque ci potrebberò essere situazioni particolari dove va a fare cilecca che si potrebberò facilmente evitare con una regexp, utilizza 5 righe di codice. Cosa vuol dire?

    Più codice = maggiore complessità = minore gestibilità

    Inoltre più codice aumenta il tempo di caricamento della pagina ... certo non sono 4 righe che fanno differenza ma in un sistema più complesso 4 righe li, 10 la, 100 dall'altra parte si sommano ad ogni esecuzione e poi presentano il conto quando la macchina tira le cuoia perché troppo carica.

    Il motivo, semplice, per il quale la regexp è infinitamente più veloce, pur essendo cosi complessa è semplice: il pattern !href=\"(.*)\"!Ue viene preso dalla libreria PCRE è trasformato in codice macchina caricato in memoria che viene poi richiamato ad ogni esecuzione dello stesso pattern. Ovviamente questo è più veloce perché non passa per PHP, a differenza del FOR, e soprattutto è codice C compilato ed ottimizzato a differenza del codice PHP che comunque è interpretato anche se byteencodato in memoria (magari usando qualcosa come phalanger ci sarebberò delle differenze in termini di velocità però è probabile che le PCRE continuerebberò ad avere la meglio).
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #16
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Caro alcio come sempre e come fanno molti nn leggi.

    La mia era un pura curiosita' che riguardava i tempi di esecuzione.
    Se non leggi cosa la gente effettivamente scrive nn so cosa dirti.

    La mia non era una sfida l'ho anche detto se leggi sopra. Ho esplicitamente detto che era una curiosita' e credo sia interessante il fatto che con explode ci mette 10 volte tanto.
    Cmq se vuole usare la regexp sono fatti di caniggia. Io ho proposto una soluzione differente postando pure i tempi di esecuzione delle 2 alternative.

    Ti sei messo a fare benchmark per portare avanti il tuo codice, ma nessuno ti ha detto "il tuo metodo è peggiore del mio".. tanto da obbligarti ad accettare la sfida!
    Non era una sfida leggi quello che ho scritto
    Non e' una gara e' un puro discorso di curiosita' perche' se davvero la reg exp fa prima allora a sto punto mi metto sotto ad imparare bene come funzionano.
    Tutto la', dal mio punto di vista e' stato un test interessante visto che ha pure fornito dei dati reali che ci fanno capire cosa e' piu' veloce.
    Se te hai inteso tutto come gara mi dispiace ma non era mia intenzione. Volevo solo effetturare un test tutto la' ma se nn ti interessa allora amen.

    Ma suppogno che questa porzione di codice faccia parte di uno script più lungo e complesso.
    Assolutamente no, la funzione che ho usato e' stata davvero scritta di getto sul forum e quelle 8 righe di codice sono tutte l'a nn ci sono altri script o cose intorno.
    Come te hai scritto di getto la regexp io ho fatto lo stesso con la mia funz.
    E capisco che poteva nn andare infatti ho pure detto che magri sistemandola guardavamo i risultati effettivi.

    Non mi sono offeso e spero nn ti sia offeso neppure te, le mie erano esmplici considerazioni, e prove.
    E come dici te ottimizzare a volte ci rende le pagine piu' veloci. Ma cmq alla fine e' abb intule perche' si passa sempre atrtaverso colli di bottiglia piuttosto restrittivi, come le bade dei server etc per cui risparmiare 0.008 secondi circa alla fine nn cambia nulla.

    Ti cambiano invece se il server ha molte richieste per cui dovresti avere piu' di 1000 reichieste contemporanee per notare la differenza di tempo di esecuzione.
    Se si ricade in questo allora ok.Senno' dal canto mio e' abb inutile cercare di ottimizzare oltre un certo tempo di esecuzionie.
    Se riesci ad abbattere il tempo di esecuzione da 10 sec a 1 sec riducendo la complessita' degli algoritmi ok ma se si tratta di passare da 0.002 a 0.0002 dal punto di vista mio nn e' che cambia tanto se nn hai appunto piu' di 1000 accessi contemporaei sul server.

    Ora sto per uscire e domani provo il tester con la regexp di djhell e vediam. Se vi interessa ancora senno amen io chiudo qua.
    Ciao e buona birra e f**a a tutti

  7. #17
    allora ragazzi piantiamola un pò, la mia discussione è votata alla ricerca di una soluzione fatta bene, non voglio explode, str pos e tutte quelle funzioni li, voglio una cosa fatta bene che mi torni utile.

    Forse se avreste impiegato il tempo per aiutarmi avrei già risolto, sento che sono ad un passo ma in realtà ancora non va.

    Se volete fare polemiche createvi una discussione.

    Sicuramente Alcio ha ragione e Virus non ha ancora capito che non mi interessa una soluzione di quel genere anche se ci metto 5 minuti a farla.

    Spero abbiate capito e ringrazio soprattutto alcio che mi ha indiciato la via giusta.

    x alcio
    preg_match_all('/(??:ht|f)tps?:\/\/[^"\']+)|(?:[^"\']+\.(?:html?|php|asp|jsp?|css|xml)(?:\?[^"\']+|\/)?)/is',$html,$matches);

    for ($i=0; $i< count($matches[0]); $i++) {
    echo "link: ".$matches[0][$i]."\n";
    }

    sono arrivato qui (l'ho recuperato da google), in effetti mi tira fuori tutti i link, tutti tutti e già sono contento il risultato è questo:

    link: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
    link: http://www.w3.org/1999/xhtml
    link: http://gmpg.org/xfn/11
    link: js/controlloform.js
    link: http://localhost/www.miosito.it/css/style.css
    link: http://localhost/www.miosito.it/css/menucss.css
    link: pagina.php?template=000002
    link: pagina.php?template=000007
    link: pagina.php?template=000008
    link: pagina.php?template=000009
    link: pagina.php?template=000003
    link: pagina.php?template=000004
    link: pagina.php?template=000010
    link: pagina.php?template=000011
    link: http://demo.templatepanic.com/
    link: foto.php?id=1&amp;tab=page_contenuti&amp;campo=fot o_contenuto
    link: /pagina.php
    link: http://demo.templatepanic.com/pagina.php?wptheme=
    link: http://codex.wordpress.org/
    link: http://blog.dreamhost.com/
    link: http://wordpress.org/extend/plugins/
    link: http://wordpress.org/extend/ideas/
    link: http://wordpress.org/support/
    link: http://wordpress.org/extend/themes/
    link: http://validator.w3.org/check/referer
    link: #pagina.php
    link: http://validator.w3.org/check?uri=referer
    link: http://jigsaw.w3.org/css-validator/check/referer

    ecc ecc

    la mia necessita è di estrapolare solo i link interni

    vale a dire pagina.php
    Mercatino online di annunci www.all-onweb.com
    Realizzazione siti web www.nineseven97.com
    Artigianato www.lartedifare.com

  8. #18
    beh, allora direi che la cosa si complica un pò, nel senso che con la SOLA regexp non sei in grado di estrarre, con matematica certezza, i soli link interni

    a questo punto basta una regexp più semplice e l'uso di parse_url che restituisce un array. L'array che ti restituisce contiene le varie parti dell'url di conseguenza ti basta verificare se l'host è presente e se si se è diverso ... perché se non c'è o se c'è ma è uguale il link si riferisce allo stesso dominio

    http://it.php.net/parse_url
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #19
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    34
    @caniggia: non so se ho capito bene cosa ti serva, cmq quello che posto è una regx che identifica il tag a con attributo href (esclude gli anchor quindi) e cattura il valore di href (sia se sta tra apici sia se è tra doppi apici) escludendo i link esterni intesi come qualsiasi cosa che inizi con una serie di caratteri alfabetici seguiti da i due punti ':'

    Faccio un appunto. Il parsing del html è cosa ben più complessa una regx come questa (e come qualsiasi altra direi) va in palla facilmente se lo html non è sintatticamente corretto.

    Se nn va bene fammi sapere.

    Codice PHP:
    // testo di prova
    $text=<<<EOT
    [url="pagina.html"]pagina.html[/url]
    [url='#ancora1']Link ancora[/url]
    [url='/']Home[/url]
    [url="dir/file.pdf"]file.pdf[/url] [url="/pagina.html"]Pagina.html[/url]
    [url="http://www.qualcosa.xx/link_esterno"]Link esterno[/url]
    <a name="ancora1">Ancora</a>
    EOT;

    $pattern='#<a\s++[^>]*?(?:href\s*+=\s*+(?![\'"][a-z]++:)(?:"([^\">]*+)"|\'([^\'>]*+)\'))[^>]*+>#i';

    preg_match_all($pattern$text$matchesPREG_SET_ORDER);
    foreach (
    $matches as $match) {
      
    $link = isset($match[2]) ? $match[2] : $match[1]; // match[2] esiste solo se il valore di href è tra apici singoli
      
    echo '<pre>' $link "</pre>\n";

    Ps: allego una png con il pattern xé nel post mi mangia gli '\\' ho provato + volte anche raddoppiandoli ma fa casini. Questa cosa è un vero problema, i caratteri dei post sono trattati come escaped e neanche un txt si può allegare bah!
    Immagini allegate Immagini allegate

  10. #20
    Mi ci sono messo è ho buttato giù un pò di codice che fa quello che gli serve, ovvero estrae i link, costruisce il percorso completo per averlo, dopo di che decide se è esterno o interno.

    In testa ci sta la configurazione che ho usato per l'esempio, ma il codice che la richiama può essere ovviamente richiamato a piacimento, anche perché sono poche righe.

    Non ho fatto un gran testing su svariati siti, non avevo il tempo, però mi pare ci siamo. Per lo più sarebbe da testare su siti fatti veramente male per vedere come reagisce.

    La regexp che ho usato è stata
    codice:
    #<a.*?href=("|\')?(.+?)(?=\1|\040|>).*?>(.+?)</a>#is
    Abbastanza semplice, ovvero prova a estrarre tutti i tag a che hanno tra apertura e chiusura un href che contenga del testo che deve stare una coppia di apici singoli o doppi. L'unica situazione che non ho testato è per l'appunto un href senza nulla ... tecnicamente da codice dovrebbe andare perché ("|\')? non ne forza la presenza è \1 nel caso che non ci sia ne l'apice singolo ne l'apice doppio corrisponderebbe al nulla e quindi andare avanti. Anche perché se non ci sono gli apici per lo meno ci potrebbe essere uno spazio, però anche questo è opzionale. Diciamo che un tag a che contenga un href senza apici e nessuno spazio dopo il link non può che contenere il tag di chiusura ... però sarebbe da testare tutto ciò

    Il ?= serve a far controllare al motore della preg se dopo il .+? ci sta un apice singolo doppio, uno spazio o il tag di chiusura, senza però spostare in avanti il parser

    Il codice che fa il lavoro è qui:

    codice:
    <?php
    
    // Acquisisce l'uri da controllare e lo scompone
    $uriToCheck = 'http://www.phpsoft.it';
    $basePathForUris = '/';
    
    // Funzione di estrazione dei link
    function extractUris($uriToCheck, $basePathForUris = false)
    {
    	// Inizializza l'elenco dei links
    	$uris = array();
    	
    	// Estrae dall'indirizzo passato tutti i link interni
    	if (preg_match_all('#<a.*?href=("|\')?(.+?)(?=\1|\040|>).*?>(.+?)</a>#is', file_get_contents($uriToCheck),
    		$extractedValues, PREG_SET_ORDER) > 0)
    	{
    		// Scompone l'url di partenza
    		$parsedUriToCheck = parse_url($uriToCheck);
    
    		// Cicla i link
    		foreach($extractedValues as $extractedValue)
    		{	
    			// Parsa l'uri
    			$parsedUri = parse_url($extractedValue[2]);
    			
    			// Inizia a costruire l'uri completo settando lo schema
    			$completeUri  = (isset($parsedUri['scheme']) === true ? $parsedUri['scheme']
    				: (isset($parsedUriToCheck['scheme']) === true ? $parsedUriToCheck['scheme']
    					: 'http')) . '://';
    					
    			// Aggiunge l'host all'uri utilizzando quello dell'indirizzo da controllare se
    			// nel link non è presente
    			$completeUri .=  isset($parsedUri['host']) === true ? $parsedUri['host']
    				: $parsedUriToCheck['host'];
    				
    			// Aggiunge la porta all'uri se presente quella nel link o quella del link da controllare
    			$completeUri .=  isset($parsedUri['port']) === true ? ':' . $parsedUri['port']
    				: (isset($parsedUriToCheck['port']) === true ? ':' . $parsedUriToCheck['port']
    					: '');
    		
    			// Aggiunge il percorso del link o dell'uri da controllare
    			$completeUri .=  isset($parsedUri['path']) === true ? $parsedUri['path']
    				: (isset($parsedUriToCheck['path']) === true ? $parsedUriToCheck['path']
    					: '');
    			
    			// Aggiunge la query se presente. In questo caso non può essere utilizzata la query del
    			// link di default perché la query string è specifica ed attinente esclusivamente al
    			// link letto
    			$completeUri .= isset($parsedUri['query']) === true ? '?' . $parsedUri['query']
    				: '';
    					
    			// Imposta uno switch
    			$isInternal = false;
    			
    			// Controlla se il link è pertinente all'indirizzo richiesto e alla path richiesta
    			if
    			(
    				(
    					// Controlla se l'host è settato, perche se non lo è il dominio si riferisce
    					// a quello corrente
    					isset($parsedUri['host']) === false
    				)
    				||
    				(
    					// Se arriva fin qui vuol dire che il valore dell'host è settato, quindi va controllato
    					// lui, lo schema (ovvero http, ftp e cosi via) ed infine la porta
    					(
    						// Lo schema potrebbe non essere presente quindi se non c'è viene assunto che sia
    						// valido perché viene considerato quello dell'indirizzo richiesto
    						(
    							isset($parsedUri['scheme']) === true
    							&&
    							$parsedUriToCheck['scheme'] == $parsedUri['scheme']
    						)
    						||
    						isset($parsedUri['scheme']) === false
    					)
    					&&
    					(
    						$parsedUriToCheck['host'] == $parsedUri['host']
    					)
    					&&
    					(
    						// La porta potrebbe non essere presente quindi se non c'è viene assunto che sia
    						// valido perché viene considerato quello dell'indirizzo richiesto
    						(
    							isset($parsedUri['port']) === true
    							&&
    							$parsedUriToCheck['port'] == $parsedUri['port']
    						)
    						||
    						isset($parsedUri['port']) === false
    					)
    				)
    			)
    			{
    				if
    				(
    					(
    						// Controlla se è richiesto il check per l'indirizzo (la path) riportata dall'uri
    						$basePathForUris !== false
    						&&
    						strlen($basePathForUris) > 0
    						&&
    						(
    							(
    								isset($parsedUri['path']) === true
    								&&
    								strpos($parsedUri['path'], $basePathForUris) === 0
    							)
    							||
    							(
    								isset($parsedUriToCheck['path']) === true
    								&&
    								strpos($parsedUriToCheck['path'], $basePathForUris) === 0
    							)
    						)
    					)
    					||
    					(
    						// Il check deve passare se la path di controllo è settata ma è vuota
    						$basePathForUris !== false
    						&&
    						strlen($basePathForUris) === 0
    					)
    					||
    					// Il check deve passare se la path di controllo non è settata
    					$basePathForUris === false
    				)
    				{
    					$isInternal = true;
    				}	
    			}
    			
    			// Inizializza un oggetto generico dove mettere le informazioni sull'uri
    			$uri = new stdClass();
    			
    			// Imposta le propietà dell'oggetto
    			$uri->Description = $extractedValue[3];
    			$uri->Uri = $extractedValue[2];
    			$uri->CompleteUri = $completeUri;
    			$uri->IsInternal = $isInternal;
    			
    			// Aggiunge l'oggetto all'elenco
    			$uris[] = $uri;
    		}
    	}
    	
    	return $uris;
    }
    
    foreach(extractUris($uriToCheck, $basePathForUris) as $uri)
    {
    	// Stampa il link a video
    	echo "Uri {$uri->Description} (<a href=\"{$uri->CompleteUri}\">{$uri->CompleteUri}</a>) is ";
    	
    	// Avvisa se è interno ho esterno
    	echo $uri->IsInternal === true ? 'internal' : 'external';
    
    	// Va a capo
    	echo "
    \n";
    } 
    
    ?>
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.