PHP

Suchbegriffe in HTML highlighten

Ich denke, ich habe einen recht brauchbaren RegEx gefunden, um Suchbegriffe in HTML zu highlighten und dabei den Inhalt von Tags zu ignorieren. Befindet sich der Suchbegriff beispielsweise in einem href-Attribut eines a-Tags, sollte der natürlich nicht „gehighlighted“ werden.

$html = preg_replace(
    pattern: '/(?![^<>]*>)'.preg_quote($searchTerm, '/').'/ui',
    replacement: '<mark class="tag">$0</mark>',
    subject: $html
);

Naja, wenn es um Tags geht, könnte ich evtl. auf preg_quote() verzichten. Aber der Vollständigkeit halber… 

So im Nachhinein denke ich mir natürlich: „Hmm… Profan!“ Aber ich bin mir sicher, in einem Jahr müsste ich mir wieder den Kopf zerbrechen. Ich habe das gesucht, um in der HTML-Ansicht meines Zettelkastens die assoziierten Tags im Fließtext hervorzuheben.

FTP Deployment

Wenn man einen Virtual Host ohne SSH & Git benutzt, ist es etwas lästig, Änderungen an einer Seite von Hand mit einem FTP Client hochzuladen. Das Projekt ftp-deplyoment kommt einem da stark entgegen.

Wenn man ein Composer Projekt hat, kann man es mit composer require dg/ftp-deployment in das Projekt einbinden. Dann eine deplyoment.php oder deplyoment.ini erstellen, wie es dort beschrieben ist, und vendor/bin/deployment deployment.php vereinfacht das Leben.

Bin ich eigentlich der Einzige, der von DDEV manchmal unglaublich genervt ist. Immer wieder stolpere ich über die beiden folgenden Probleme. Vollkommen egal, ob ich Colima oder OrbStack benutze.

  • Irgendwann hört der Mutagen-Spaß auf zu synchronisieren, oder die Synchronisation ist so langsam, dass effektiv keine Arbeit möglich ist. Obwohl in Anbetracht der ignorierten Verzeichnisse in der .ddev/mutagen/mutagen.yml nur eine Hand voll Dateien übrig bleiben, die überhaupt synchronisiert werden müssten.
  • Xdebug beachtet grundsätzlich nur Breakpoints in der index.php eine Projekts. Alle anderen Breakpoints werden ignoriert.

Es ist zwar nervig, den vollständigen Stack in den passenden Versionen lokal zu installieren. Aber arbeiten konnte ich damit immer sehr gut. Ich denke, ich will dahin zurück…

The Power Of Glob

Mir war nicht klar, dass man mit nur einem Aufruf von glob eine Verzeichnis Struktur rekursiv scannen kann, wenn man zuvor die Tiefe kennt.

glob("$basedir/{,*/,*/*/,*/*/*/}*.jpg", GLOB_BRACE);

Das GLOB_BRACE-Flag ist schon ein Knaller.