Mario Daka u rubrici Programiranje od

Dakle, izvadim iz baze sadržaj (čitaj: string) u HTML-u sa svim i svačim od HTML elemenata, a među njima je u tom stringu i hrpa URL-ova unutar taga <a href>. E sad, trebao bih sve te tagove provjeriti da li imaju već nofollow paramtera u tagu tj. ako nemaju, kako da ga dodam na sve linkove tog stringa?

Imam npr. ovo:

  • <a class="crveni" href="http //nesto.hr">Nešto je link</a>

...i želim pretvoriti sve takve u ovo:

  • <a rel="nofollow" class="crveni" href="http //nesto.hr">Nešto je link</a>

Znate da to trebam kako bi sačuvao tzv. link-juice. Zbog SEO metoda. Programiram u PHP-u.

Prijavite se ili registrirajte kako biste odgovorili na ovo pitanje.

1 odgovor

+10 glasa
Hrvoje Novak od
odabran od Mario Daka
 
Najbolji odgovor

Evo jednog od modernijih rješeanja u PHP-u:

$str = '<a href="http //localhost/test/">interno</a>
<a href="http //localhost/mytest/go/hostgator">neki link</a>
<a href="http //nesto.hr" rel="me">vanski link</a>
<a href="http //svastanesto.com">vanjski</a>
<a href="http //example.com" rel="nofollow">vanjski al
već sa nofollow</a>';
 
$dom = new DOMDocument();
$dom->preserveWhitespace = FALSE;
$dom->loadHTML($str);
$a = $dom->getElementsByTagName('a');
$host = strtok($_SERVER['HTTP_HOST'], ':');
 
foreach($a as $anchor) {
        $href = $anchor->attributes->getNamedItem('href')->nodeValue;
 
        if (preg_match('/^https?:\/\/' . preg_quote($host, '/') . '/', $href)) {
           continue;
        }
 
        $noFollowRel = 'nofollow';
        $oldRelAtt = $anchor->attributes->getNamedItem('rel');
 
        if ($oldRelAtt == NULL) {
            $newRel = $noFollowRel;
        } else {
            $oldRel = $oldRelAtt->nodeValue;
            $oldRel = explode(' ', $oldRel);
            if (in_array($noFollowRel, $oldRel)) {
                continue;
            }
            $oldRel[] = $noFollowRel;
            $newRel = implode($oldRel,  ' ');
        }
 
        $newRelAtt = $dom->createAttribute('rel');
        $noFollowNode = $dom->createTextNode($newRel);
        $newRelAtt->appendChild($noFollowNode);
        $anchor->appendChild($newRelAtt);
}
 
var_dump($dom->saveHTML());

Slična pitanja

1 odgovor 412 👀
1 odgovor 433 👀
1 odgovor 980 👀
Marinko Zadro 14.04.2015. pitanje u rubrici Programiranje od Marinko Zadro
2 odgovora 660 👀
5 odgovora 1.5k 👀
11.12.2013. pitanje u rubrici Web Marketing od i_mark
1 odgovor 2.5k 👀

NOVI ZNATKOV STRUČNI INTERVJU

Luka Oman

Prijatelji životinja

Kako je to biti vegan u Hrvatskoj?

[ Vidi sve intervjue ]
Znatko predstavlja

Ecommerce & marketing konferencija

Zagreb
4. 10. 2024.

KUPI ULAZNICU
Znatko predstavlja

Game Changer 3.0



Zagreb
10. 10. 2024.

KUPI ULAZNICU
Znatko predstavlja seminar

Ken Honda 2024


Financijska sloboda i "novčani EQ"

Zagreb
12. - 13. 10. 2024.

KUPI ULAZNICU
Znatko predstavlja

SUPERPRODAVAČ 2024


Umjetna inteligencija u službi prodaje

Zagreb
24. - 25. 10. 2024.

KUPI ULAZNICU
Znatko predstavlja

FMCG RETAIL SUMMIT


Quo vadis, retail?

Zagreb
7. 11. 2024.

KUPI ULAZNICU
Znatko predstavlja

Najnoviji trendovi u IT industriji

Zagreb
28. i 29. 11. 2024.

KUPI ULAZNICU

Medijska platforma Znatko

NAJNOVIJE VIJESTI

Impressum | Znatkova redakcija

15.0k pitanja

24.3k odgovora

9.5k komentara

1.7k korisnika

...