it-swarm.com.de

Bildquelle mit dem Inhaltsfilter ändern?

Ich bin mit Regex sehr unerfahren, aber ich versuche, eine Funktion zu erstellen, die nach the_content() und get_the_content() filtert, um den SRC aller Bilder zu ändern. Der beabsichtigte Zweck wäre, die URLs so zu ändern, dass http://i0.wp.com/ anstelle von http:// verwendet wird. Dies würde es Posts ermöglichen, die Photon-API zu nutzen, ohne die JS-Seite von Photon zu benötigen.

Ich weiß, dass ich mich mit einem Filter in the_content() einbinden muss, um dies zu erreichen, aber ich konnte dies nicht mit str_replace() umsetzen, daher gehe ich davon aus, dass die Verwendung von preg_replace() funktionieren würde.

Wenn es möglich ist, ?quality=70&strip=all am Ende der URL einzufügen, kann dies auch dazu beitragen, die Seitengeschwindigkeit zu verringern.

Irgendwelche Gedanken?

1
Austin Biggs

Lass es uns versuchen:

$str = '<img src="http://myserver.mydomain/picture.png" />';
$pattern ='#<img src="http://.*/(.*)" />#';
$replace = '<img src="http://http://i0.wp.com/$1?quality=70&strip=all />"';
$result = preg_replace($pattern, $replace, $str);

Das $ -Muster ist recht einfach und sehr spezifisch. Möglicherweise müssen Sie es etwas verallgemeinern, aber es sollte Ihnen die Richtung zeigen, in die es gehen soll. Z.B. es kümmert sich nicht um mögliche Leerzeichen. Ein erster Versuch, sich darum zu kümmern:

$pattern ='#<\s*img\s*src\s*=\s*"http://myserver.mydomain/(.*)"\s*/\s*>#';
1
Latz