- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problemi con strripos() per verificare la presenza di codice html in un altro sito
-
Problemi con strripos() per verificare la presenza di codice html in un altro sito
Ciao a tutti,
non ho trovato niente riguardo alla mia domanda.
Allora faccio in breve: ho pensato a creare un sistema di scambio link che, con la funzione strripos() di php, verifica se il codice del mio link/banner sta nella pagina del sito partner allo scambio link e in caso positivo mostri il link/banner.
Questo è il codice che ho creato:
[php]<?php
$sito = "hp://sito.com/" // Sito partner allo scambio link
$code = "<a href="hp://miosito.net/">...</a>"; // Codice del mio link/bannerif(strripos($code, file_get_contents($sito)) === true) { echo "Il link sta"; } else { echo "Il link non sta"; }
?>[/php]
Solo che mi dice sempre che il link non sta, ma con tutti i siti partner a me ho provato, ma dice sempre no
Come faccio a risolvere?
Grazie,
-
Penso che sia una via sbagliata, in quanto ad ogni visualizzazione della tua pagina andresti a generare una visualizzazione della pagine dei siti partner.
Dovresti prevedere la ricerca "una tantum" ogni giorno con una variabile o altro.
-
Infatti hai ragione, utilizzerò i cron per verificarlo, però la via è sempre quella, solo che invece di far stampare a video "Il link sta" o "Il link non sta", lo lascierà nel database se sta (perché infatti uso il database) o lo cancellerà se non sta.
Ma mi serve sempre la via per cercare il codice del mio scambio link, anche con formati diversi, tipo aggiunto l'attributo class al tag a, o messo prima target e poi href e viceversa, o metto qualche tag font davanti alla scritta, ecc...
Come faccio?
Grazie,
-
se quell oscript ti da problemi prova cosi:
[php]
<?php
$sito = "hp://sito.com/" // Sito partner allo scambio link
$code = "<a href="hp://miosito.net/">...</a>"; // Codice del mio link/bannerif(stristr(file_get_contents($sito), $code) === true) { echo "Il link sta"; } else { echo "Il link non sta"; }
?>
[/php]poi potresti verificare solo se trovi href="h**p://miosito.net/"
-
Allora mi sono letto la documentazione ufficiale di stristr() però non ho capito una cosa, dà true anche con formati diversi, tipo aggiunto l'attributo class al tag a, o messo prima target e poi href e viceversa, o messo qualche tag font davanti alla scritta, ecc...?
Grazie,
-
stristr cerca la parola esatta appunto ti dicevo di controllare solo href="tuosito" nella pagina
-
strripos
Returns the numerical position of the last occurence of *needle* . Also note that string positions start at 0, and not 1. If *needle* is not found, **FALSE** is returned.
Se trovi la stringa ti ritorna un numero e non mi pare che "true === a un numero qualsiasi".
Prova col testare "=== false" che è invece un valore di ritorno contemplato dalla funzione.
-
@Thedarkita said:
stristr cerca la parola esatta appunto ti dicevo di controllare solo href="tuosito" nella pagina
E per fare come ho chiesto io nel post 5 che funzione devo usare?
Grazie,
-
penso devi usare qualche espressione regolare.. ma in quelle sono poco ferrato quindi attendiamo qualcuno più preparato per eventuali consigli
-
the-art-of-web.com/php/parse-links/
mi devi una birra
-
Aspetta, non ho capito
ho visto questo:
[html]/<a\s[^>]href=("??)(http[^" >]?)\1[^>]>(.)</a>/siU[/html]
Ma non ho capito come imposto il contenuto di href e la parola "Il mio sito"
Come faccio?
Grazie,
-
[php]
$url = "example.net/somepage.html";
$input = @file_get_contents($url) or die('Could not access file: $url');
$regexp = "<a\s[^>]href=("??)([^" >]?)\1[^>]>(.)</a>";
if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
foreach($matches as $match) {
if($match[2]=='TUOLINK') {
$risposta = "l'hai trovato";
}
}
}[/php]
ci hai provato... metti la birra in frigo!
-
Aspetta non ho ancora tanto capito.
[php]if($match[2]=='TUOLINK')[/php]
Al posto di 'tuolink' devo mettere il link del mio sito, il nome del mio sito o il codice del link/banner?
Grazie,
-
soffri di sdoppiamento della personalità? in certi post mi sembri più esperto in altri mi sembri un beginner
In $match[2] hai l'url del link trovato, in$match[3] hai il testo associato al link.
con preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER) hai trovato tutti i link in pagina e ce l'hai in $matches, con il foreach li controlli uno per uno cercando quello che ha $match[2]=="all'url del tuo sito" e $match[3]=="al testo che hai chiesto venisse usato per il link".se rispondi "aspetta non ho ancora capito" ti declasso definitivamente al gruppo dei beginner.
-
Scusa il disturbo, ma tu metti $match[1], 2, 3...
Ma non è $matches che dovrebbe andare, dato che $matches è un array e $match no?
Mi devi scusare ma io di php conosco poche cose ma quelle che conosco le conosco bene, ma qui non coosco niente
Grazie,