Zum Inhalt springen

Archiv für "Regex"

WordPress filter for lazy loading src

Chris Coyier (@css) has shared a code snippet that will add loading="lazy" to every scr=" instance in WordPress's content.

But this will replace every instance, not only in img or iframe tags, which can lead to some unwanted replacements.

Here's my version for that filter:

// in theme’s functions.php or a plugin
function wbr_add_lazy_loading($content){
$content = preg_replace('/(< [^>]*?)(\ssrc=)(.*?\/?>)/','\1 loading="lazy" src=\3',$content);
return $content;
}
add_filter('the_content','wbr_add_lazy_loading');

(! beware that WordPress here adds an empty space after the "<", look at the test link for the correct regex)

This should match all src attributes in tags, but excludes for example "data-src" from the match and ...

Regulex: JavaScript Regular Expression Visualizer

Ich finde Regular Expressions toll. Ich habe wahrscheinlich nur 0.002% wirklich verstanden, aber das bisschen reicht schon, um mir den eher Development-lastigen Teil meiner Arbeit manchmal zu erleichtern. Ich brauche zwar meistens länger, den passenden Ausdruck zusammenzubauen, und manchmal auch länger, als es gedauert hätte, den anstehenden Task einfach x-mal per Hand zu ändern, aber, hey, RegEx!

Gerade flog ein nettes Visualisierungstool durch meine Twitter-Timeline: Regulex

Vielleicht erhöht sich ja mein Verständnis-Level nun auf 0.003%… :-)

Google Conditional Hack, Teil 2

Neben dem Script, welches dann schlussendlich den Viagraspamcode ausgibt (siehe neulich), werden noch weitere Scripte in die PHP-Dateien injiziert, diese fungieren dann als Backdoor, um beliebigen (php) Code auszuführen.

Damit das klappt, muss der Code quasi "auf Zuruf" ausgeführt werden. Eine Version, die ich gefunden habe, arbeitet mit eval(); in Verbindung mit base64_decode();, eine andere in Verbindung mit gzinflate(); und noch eine mittels str_rot13();.

Die, die mir am meisten Kopfzerbrechen machte, arbeitet mit preg_replace();, in Verwendung mit dem (bösen!) "e"-Modifier  - d.h. das Ergebnis der Ersetzung wird direkt ausgeführt. Ersetze also irgendeinen String mit einem Funktionsaufruf und *bam* - Code ...