Pogledajte određenu poruku
Staro 23. 10. 2009.   #4
srdjevic
profesionalac
Professional
 
Datum učlanjenja: 15.06.2005
Lokacija: Chicago IL, USA
Poruke: 209
Hvala: 12
12 "Hvala" u 11 poruka
srdjevic is on a distinguished road
Exclamation Razmišljanja dokonog programera... :)

Vrlo opasan preg je ovo, hvata samo poslednji link u redu....

PHP kôd:
addNoFollow('<a href="http://domen1.com/">domen1</a><a href="http://domen2.com/">domen2</a>') == '<a href='http://domen2.com/' rel='nofollow'>domen2</a>' 
Ja sam to kontao rešiti drugojačije, baš razmišljah da uvedem ovako nešto na jedan sajt, pa eto taman da modifikujem malo ovo, i meni će trebati uskoro...

Ovo rešenje traži samo ceo otvarajući A i prvo izbacuje postojeći rel atribut (čak i ako nema navodnike, jer se i to guta), i onda dodaje naš rel="nofollow" na kraj:

PHP kôd:
function addNoFollow($str) { 
    
$search $replacements = array();
    
$preg '/<a([^>]*)>/i';
    
preg_match_all($preg$str$match);
    foreach ( 
$match[0] as $key => $val ) {
        if ( !
preg_match('/\shref=/i'$val) ) continue;
        
$search[] = $val;
        
$r preg_replace('/\srel=[\"\']?\w+[\"\']?/i'''$val);
        
$r substr($r0, -1) . ' rel="nofollow">';
        
$replacements[] = $r;
    }
    return 
str_replace($search$replacements$str);

Mislim da sam ovim pokrio većinu slučajeva. Testirano sa:

PHP kôd:
print_r(addNoFollow('<a href="http://domen1.com/" rel="something">domen1</a><a href="http://domen2.com/">domen2</a><a href="http://domen3.com/" rel=something>domen3</a>')); 
__________________
ActiveCampaign - Email marketing made simple.

Poslednja izmena od srdjevic : 23. 10. 2009. u 10:15. Razlog: moja verzija nema stripslashes() na početku.... imam alergiju. :D
srdjevic je offline   Odgovorite uz citat
"Hvala" srdjevic za poruku: