Seite 1 von 1
PHP: String und regulärer Ausdruck o.ä.
Verfasst: 29.01.2009, 02:20
von TheRob
Morgen zusammen
Nacht 3h G00glen muss ich jetzt doch mal hier schreiben bo jmd ne fixe Idee hat.
Es geht um Lightbox und die Bilder.
Bekomme einen Text in dem sind Bilder. Jetzt sollen um die Bilder Links gesetzt werden, so dass es mit Lightbox geht.
Code: Alles auswählen
<?php
//String der reinkommt
$str='<p>Das ist ein Text<img src="test.jpg" height="200" width="50" /><br />';
$str .='und noch mehr <img src="example.jpg" height="100" width="100" />Text</p>';
//String der rausgehen soll
?>
<p>Das ist ein Text<a href="test.jpg" rel="Lightbox[serie]"><img src="test.jpg" height="200" width="50" /></a><br />';
'und noch mehr <a href="example.jpg" rel="Lightbox[serie]"><img src="example.jpg" height="100" width="100" /></a>Text</p>';
Hatte schon mit regulären Ausdrücken hin und her gemacht, aber bin kein Meister darin...
Danke für sachdienliche Hinweise.
Gruss Rob
Verfasst:
von
Hochwertiger Linkaufbau bei ABAKUS:
- Google-konformer Linkaufbau
- nachhaltiges Ranking
- Linkbuilding Angebote zu fairen Preisen
- internationale Backlinks
Wir bieten
Beratung und
Umsetzung.
Jetzt anfragen:
0511 / 300325-0
Verfasst: 29.01.2009, 03:06
von huah
Wenn Du in den Strings wiederkehrende Muster hast, müsste das mit
https://de.php.net/preg_replace zu schaffen sein.
Wenn Du nicht mal ein richtiges Besipiel postest, kann man dazu aber eh nicht viel sagen - ka was Lightbox is

Verfasst: 29.01.2009, 03:09
von TheRob
Moins
Grundsätzlich isses egal was LightBox ist. Geht "nur" darum, um ein Bild einen Link zu bauen, welcher im href das src des Bildes hat. Bsp. hab ich ja oben ($str).
//String der reinkommt
$str='<p>Das ist ein Text<img src="test.jpg" height="200" width="50" /><br />';
$str .='und noch mehr <img src="example.jpg" height="100" width="100" />Text</p>';
function litebox_rel($the_content) {
$preg = '/(<a(.*?)href="([^"]*.)(bmp|gif|jpeg|jpg|png)"(.*?)><img)/ie';
$repl = '(strstr("\2\5","rel=") ? "\1" : "<a\2href=\"\3\4\"\5 rel=\"lightbox\"><img")';
return preg_replace($preg,$repl,$the_content);
}
echo litebox_rel($str);
Verfasst: 29.01.2009, 03:16
von scysys
Verstehe nicht ganz was du nun möchtest, mag eventuell an der Uhrzeit liegen.
Aber so wie deine beiden Beispiele da kann der Code gar nicht funktionieren, da er fehler enthält.
Eventuell geht es einfacher, meistens denkt man einfach nur viel zu weit.
Poste mal die Webseite auf der du Lightbox nutzen möchtest.
EDIT:
Falls du aber nur Beispiele für eine Umsetzung mit PHP suchst, findest du solche auch direkt beim Hersteller.
Verfasst: 29.01.2009, 03:20
von TheRob
Website ist nur lokal bei mir.
Das Script an sich ist ohne Fehler.. bis halt das es nicht tut was ich mag
Vllt. nochmal kurz:
<img src="example.jpg" /> soll umgewandelt werden in
<a href="example.jpg" rel="Lightbox[bla]"><img src="example.jpg" /></a>
Verfasst: 29.01.2009, 03:24
von huah
Mit
https://de.php.net/manual/de/function.preg-match.php kannst Du das Bild src rausholen und in ein Array speichern. Dann könnte man mit einer for Schleife Bild und Link bauen. Wenn allerdings der Text auch noch mit übernommen werden soll, wüsste ich grad auch nicht weiter - muss aber was mit preg_replace sein.
Verfasst: 29.01.2009, 03:27
von TheRob
huah hat geschrieben:Wenn allerdings der Text auch noch mit übernommen werden soll, wüsste ich grad auch nicht weiter
Thats the problema

Das muss so sein. Na ich beschäftige mich mal weiter mit Internet. Irgendwo muss es das doch geben.
Gibt auch nen Haufen Codeschnipsel in der Richtung, aber die gehen alle nicht so recht.
Verfasst: 29.01.2009, 03:31
von huah
Du könntest den String vorab in einzelne Strings, die je einen Text und einen Link enthalten, aufteilen und diese dann mit preg_match weiter verarbeiten...
Verfasst: 29.01.2009, 03:43
von scysys
Seite selber Programmiert oder benutzt du ein CMS, Blog etc.....dies sind alles dinge die man wissen sollte um den Code korrekt anpassen zu können. Ich kann doch jetzt nicht auf gut Glück dir ein Beispiel herzaubern ohne zu wissen auf was du aufbaust.
Mit str, str_replace() kannst du hier gar nicht Arbeiten wenn du sagen wir Hallo in <a href="#">Hallo</a> umwandeln möchtest. Verwende die PHP Funktion
https://de2.php.net/manual/de/function.preg-replace.php
Diese ermöglicht dir den Einsatz von Regulären Ausdrücken (auch Regular Expressions bzw. abgekürzt RegExp), mit deren Hilfe man Mengen und Untermengen von Zeichenketten über bestimmte Regeln beschreiben kann.
Das hört sich nun sehr theoretisch an, doch so kompliziert sind Reguläre Ausdrücke in Wirklichkeit gar nicht.
Verfasst: 29.01.2009, 04:11
von TheRob
Nicht das gelbe vom Ei, aber es funktioniert erstmal
Code: Alles auswählen
function litebox_rel($content) {
$searchfor = '/<img.*?(alt="[^"]*"|src="[^"]*").*?(alt="[^"]*"|src="[^"]*").*?\/>/';
$replacewith = '<a rel="LightBox[postimages]" href="$1>$0</a>';
if (is_single() === TRUE){
$content = preg_replace($searchfor, $replacewith, $content);
$content = str_replace('href="src="','href="',$content);
}
return $content;
}
add_filter('the_content', 'litebox_rel');
Verfasst: 29.01.2009, 12:37
von bloddy newbie
hier nimm mal den:
Code: Alles auswählen
$str = preg_replace (
"#(<img.*src=[\"']{1}([^\"']*)[\"']{1}.*/?>)#siU",
"<a href=\"$2\" rel=\"Lightbox[serie]\">$1</a>",
$str
);
Der Ausdruck setzt jedoch voraus, dass die Verlinkung im SRC Attribut mittels umschließenden " oder ' geschieht.
Grüße BN
Verfasst: 29.01.2009, 12:44
von TheRob
bloddy newbie hat geschrieben:hier nimm mal den:
Code: Alles auswählen
$str = preg_replace (
"#(<img.*src=["']{1}([^"']*)["']{1}.*/?>)#siU",
"<a href="$2" rel="Lightbox[serie]">$1</a>",
$str
);
Der Ausdruck setzt jedoch voraus, dass die Verlinkung im SRC Attribut mittels umschließenden " oder ' geschieht.
Grüße BN
Da ich unbekannte Wesen ungern küsse.... DANKE ICH DIR!!!
Funktioniert perfekt. Das was ich benötigte...