Textfeld und PHP Function Frage...

Sniky76

Mitglied
Guten Abend wünsche ich...

ich hab da mal wieder ein Problem...

Eigentlich wollte ich ja nur ein ganz einfaches Gästebuch bauen und nun wird echt sogar das zum Problem :D

Ich hab mir da ein kleines Formular gebaut wo die Besucher der Webseite meiner Tochter einen Eintrag in ein Gästebuch machen können. Bis dahin ist ja auch alles noch ganz einfach und auch klar. Funktioniert übrigens alles in BB Code... Ist ja vielleicht noch wichtig für den Rest meiner Frage ;)

Gut nun mal zu meinem Problem. Also ich schick das jetzt alles in dem Formular ab und trage diese dann in die Datenbank ein.

So nun wird die Sache wieder aus der Datenbank ausgelesen und alles mit:

Code:
$inhalttxt = str_replace('...', '...',$inhalttxt);

verarbeitet...

Der ganze Code wäre jetzt ein wenig viel für den Beitrag.

So das funktioniert ja soweit auch.

nur wenn jetzt mal ein Benutzer ein zu großes Bild in das Gästebuch einträgt, zerschießt es die ganze Seite :(

Nun hab ich heute den ganzen Tag im Netz auf google und überall nach einer Lösung gesucht und siehe da, ich hab da eine Super PHP Function gefunden, die mir die Bilder prüft und dann wenn sie zu groß sind auf eine max höhe oder auch Breite anpasst.

Die Function wenn ich Sie teste funktioniert auch Super und wird so aufgerufen:

imagelink("http://www.meinbild.de/bild.jpg");
oder auch
imagelink("".$bildvariable."");

Das ist ja auch klar.

Nur ist ja jetzt der Link zu meinem Bild in der Variable $inhalttxt die ich ja wegen dem BB Code zerlegt habe und wo ja auch der Rest vom Gästebucheintrag mit drin steht. Wie bekomme ich das jetzt hin, das ich meinen [ IMG ]http://www.meinbild.de/bild.jpg[ / IMG ] so zerlege, dass ich ihn durch meine imagelink("http://www.meinbild.de/bild.jpg"); Function prüfen lasse und dann an der stelle wo er auch im Formular eingetragen wurde im GB wieder ausgebe?

Ich hab da echt überhaupt gar keinen Plan und hoffe wirklich das Ihr meine Frage verstehen könnt und mir auch helfen könnt? Ein kleiner Tip zur Lösung wäre wirklich SUPER :D

Danke !

Viele Grüße,
Sniky
 
Du könntest auch CSS einsetzen, damit die Grafik mit einer eingeschränkten Größe dargestellt wird.
 
Du könntest auch preg_replace_callback benutzen:
PHP:
$str = preg_replace_callback("/\[img\](.*)\[\/img\]/Usi", 'imagelink', $str);

Du musst dann allerdings die Funktion imagelink() umschreiben!
 
Zuletzt bearbeitet:
Hallo,

ich nochmal :)

Ja so ähnlich hab ich das auch gemacht...

Jetzt funktioniert das zwar, das ich mein Bild durch die Funktion prüfen lasse und das es dann auch angepasst wird, nur hab ich jetzt, wie sollte es auch anders sein ein neues Problem und so richtig verstehe ich das ja jetzt gar nicht... :confused:

Wenn ich jetzt das Bild in dieser Form einfüge:

[ URL="http://www.meineseite.de" ] [ IMG ]http://www.meinbild.de/test.jpg[ /IMG ] [ /URL ]

Sollte das Bild ja eigentlich mit einer Seite verlinkt sein ist es aber danach nicht mehr :(

Mal kurz zur Erklärung wie ich es jetzt gemacht habe:

Da es so erstmal nicht so richtig funktioniert hatte:

preg_match_all('[ IMG ](.*)[ /IMG ]!U',$inhalttxt,$bilder);

Da wurden mir zu viele Daten ausgegeben und der Link wurde nicht erkannt :confused:

wandle ich jetzt erst mit str_replace das [ IMG ] und [/ IMG ] in ::=IMG=::=IMG=:: um... scheint für die Erkennung eindeutiger zu sein.

So jetzt kommt im Script:

Code:
preg_match_all('!::=IMG=::=IMG=::(.*)::=IMG=::=IMG=::!U',$inhalttxt,$bilder); 
foreach($bilder[0] as $bild){ 
//imagelink funktion etc
$bild = str_replace('::=IMG=::=IMG=::','',$bild);
//echo"$bild";
$bild = imagelink($bild);
$inhalttxt = $bild;
}
echo stripslashes($inhalttxt);


Nun gibt er mir auch alles genau so wieder aus, wie ich es in das Formular eingegeben habe... Nur die verlinkten Bilder sind dann nicht mehr verlinkt. :confused: Das sollte doch aber eigentlich nicht passieren, oder?

Hat vielleicht irgend jemand eine idee, warum das passiert und wie ich es jetzt anstellen kann, dass die Bilder dann auch weiter verlinkt sind?

Wenn ich so einen Link eingebe:

[ URL="http://www.meineseite.de" ] testlink [ /URL ]

Dann ist der danach auch an der Stelle, wo er eigentlich sein sollte und ist dann auch ein Link.

Danke...


Viele Grüße,
Sniky
 
Hallo,

hat da echt keiner eine Idee? Ich meine ok ich bin da auch total überfragt und versteh das überhaupt gar nicht... aber vielleicht hat ja noch irgend jemand eine Idee wie ich wenigstens dahinter komme wo mein Link auf einmal hin verschwindet? ich meine das:

preg_match_all('!::=IMG=::=IMG=::(.*)::=IMG=::=IMG=::!U',$inhalttxt,$bilder);

zerlegt ja wirklich nur meinen Link... rufe ich danach die Variable Bild auf, steht da auch wirklich nur

::=IMG=::=IMG=::LINK-ZUM-BILD::=IMG=::=IMG=::

drin und damit sollte der doch auch an der stelle nur das verarbeiten und den Code davor gar nicht weiter beachten, oder? ich meine ich hab sogar schon ein paar freizeichen zwichen URL Code und IMG Code gelassen, bringt aber auch nichts :(

Danke!

Viele Grüße,
Sniky
 
Zuletzt bearbeitet:
Hallo Leute,

ich hab das jetzt noch mal anders gemacht und wie immer ein neues Problem :)

So sieht die Funktion bis jetzt aus:

PHP:
$bild = preg_replace('!\[IMG\](.*)\[/IMG\]!U',''.imagelink('$1').'',$inhalttxt);
function imagelink($url='') {
  $url = str_replace("{+}","/",urldecode($url));
  $image = str_replace("file://", "", $url);
  if (!is_resource($file = fopen($image,"r")))
   return ''.$url.'';
}

und als fehlermeldung kommt wie geschrieben:
Warning: fopen($1) [function.fopen]: failed to open stream:

obwohl doch bei return ''.$url.''; der link drin steht...


Kann mir da bitte bitte jemand helfen?

ist doch wirklich zum verrückt werden :(


Danke...

Viele Grüße,
Sniky
 
Zurück