Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] preg_replace_callback() klappt irgendwie nit =/ (https://www.gegen-bilderklau.net/thread.php?threadid=172982)


Geschrieben von Black Katrin am 30.06.2010 um 21:43:

  preg_replace_callback() klappt irgendwie nit =/

Hallo zusammen,

Ich würde folgendes gerne machen: in einem Text möchte ich nicht den vollständigen HTML Code schreiben um bilder einzufügen, sondern mit preg_replace das problem lösen im sinne von

{bild}bild_id,align,grosse{/bild}

nun ist folgendes, mit der bild_id kann ich das bild aus der datenbank abfragen, aber dafür müsste ich ja dazwischen eine datenbank abfrage schalten können... ist das in irgendeinerweise möglich? leider bin ich mit preg_replace noch nicht solange am basteln und üben und daher wenig erfahrung... und die seiten die hilfe geben sollen, haben das einfache deutsch leider nicht erfunden =/ daher hoffe ich das es mir hier jemand vielleicht einfach erklären könnte...

Schonmal Danke im Vorraus!

siehe unten



Geschrieben von Oli am 30.06.2010 um 21:52:

 

Hi,

schau dir mal preg_match() und preg_match_all() an. Damit kann man Inhalte "rausfischen" und sie weiterverwerten.

LG,
Oli



Geschrieben von Black Katrin am 30.06.2010 um 22:00:

 

uh dank deinen hinweisen hab ich noch was anderes gefunden smile mit preg_replace_callback() dürfte es auch funktionieren, da mach ich ja ne eigene funktion dafür... bist nen schatz, danke



Geschrieben von Oli am 30.06.2010 um 22:03:

 

Stimmt, das gibts auch noch, ist mir gar nicht eingefallen Augenzwinkern .
Gern geschehen Augenzwinkern .



Geschrieben von Black Katrin am 30.06.2010 um 22:42:

 

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
<?php

  function FunktionBild($treffer) {
    $bild_id $treffer[1];
    $align $treffer[2];
    
      $bilder_abfrage "SELECT * FROM galerie_bilder WHERE id='$bild_id'";
        $bilder_ergebnis=mysql_db_query($db,$bilder_abfrage,$verbindung);
       while($row mysql_fetch_object($bilder_ergebnis))
             {$url=$row->url;}

    $link "<a href='index.php?section=bild&bild_id=$bild_id'><img src='bilder_bild.php?pfad=../privi/bilder/$url' class='bilder' alt='Fotografie - &copy; Katrin Affolter' align='$align'></a>";
    return $link;
  }

$blog_id $_GET['blog_id'];


  $blog_abfrage "SELECT * FROM blog WHERE id='$blog_id'";
  $blog_ergebnis=mysql_db_query($db,$blog_abfrage,$verbindung);
  while($row mysql_fetch_object($blog_ergebnis))
  {
   $id $row->id;
   $titel=$row->titel;
   $anlese=$row->anlese;
   
   //{bild}bild_id,align{/bild}
   //{galerie}tag1,tag2,tag3{/gallery}
   $text=$row->text;
   $text preg_replace('#\{bild}(.*),(.*){/bild}#Uis''FunktionBild'$text);

   $daten=explode(".",$row->datum);
   if($daten[1]=="01"){$datum="$daten[0]. Januar $daten[2]";}
   if($daten[1]=="02"){$datum="$daten[0]. Februar $daten[2]";}
   if($daten[1]=="03"){$datum="$daten[0]. März $daten[2]";}
   if($daten[1]=="04"){$datum="$daten[0]. April $daten[2]";}
   if($daten[1]=="05"){$datum="$daten[0]. Mai $daten[2]";}
   if($daten[1]=="06"){$datum="$daten[0]. Juni $daten[2]";}
   if($daten[1]=="07"){$datum="$daten[0]. Juli $daten[2]";}
   if($daten[1]=="08"){$datum="$daten[0]. August $daten[2]";}
   if($daten[1]=="09"){$datum="$daten[0]. September $daten[2]";}
   if($daten[1]=="10"){$datum="$daten[0]. Oktober $daten[2]";}
   if($daten[1]=="11"){$datum="$daten[0]. November $daten[2]";}
   if($daten[1]=="12"){$datum="$daten[0]. Dezember $daten[2]";}
   
   $bild_id=$row->bild_id;
   $bilder_abfrage "SELECT * FROM galerie_bilder WHERE id='$bild_id'";
   $bilder_ergebnis=mysql_db_query($db,$bilder_abfrage,$verbindung);
   while($row mysql_fetch_object($bilder_ergebnis))
   {$url=$row->url;}

   echo"<a href='index.php?section=bild&bild_id=$bild_id'><img src='bilder_bild.php?pfad=../privi/bilder/$url' class='bilder' alt='Fotografie - &copy; Katrin Affolter' align='left'></a>
         <b class='gross'>$titel</b> vom $datum
         <br><b>$anlese</b>
         <br>$text
   ";

   }

echo"<br>";



?>



http://web271.zeta.ibone.ch/test/index.php?section=blog&blog=1&blog_id=1


klappt nicht unglücklich zweite bild erscheint nicht... welches mit der funktion ausgegeben werden müsste... ideen?



Geschrieben von Oli am 30.06.2010 um 23:10:

 

Auf die schnelle ist mir nicht viel aufgefallen.. abeeeeeer.. Wo wir hier von preg_replace_callback gesprochen haben,

php:
1:
$text preg_replace('#\{bild}(.*),(.*){/bild}#Uis''FunktionBild'$text);

sollte das nicht preg_replace_callback heißen?



Geschrieben von Black Katrin am 30.06.2010 um 23:23:

 

xD macht die sache nit besser...

php:
1:
$text preg_replace_callback('#\{bild}(.*),(.*){/bild}#Uis''FunktionBild(\1,\2)'$text);


jegliche art die mir einfällt... es geht nit unglücklich ich bin zu doofe



Geschrieben von Oli am 30.06.2010 um 23:27:

 

Hm. Probiers mal so:
php:
1:
$text preg_replace_callback('#\{bild}(.*),(.*){/bild}#Uis''FunktionBild'$text);


Und die Funktion dazu:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function FunktionBild($treffer) {
    global $db$verbindung//notwendig!
    $bild_id $treffer[1];
    $align $treffer[2];
    
      $bilder_abfrage "SELECT * FROM galerie_bilder WHERE id='$bild_id'";
        $bilder_ergebnis=mysql_db_query($db,$bilder_abfrage,$verbindung);
       while($row mysql_fetch_object($bilder_ergebnis))
             {$url=$row->url;}

    $link "<a href='index.php?section=bild&bild_id=$bild_id'><img src='bilder_bild.php?pfad=../privi/bilder/$url' class='bilder' alt='Fotografie - &copy; Katrin Affolter' align='$align'></a>";
    return $link;
  }

Beachte das global $db, $verbindung, sonst hast du die Variablen nicht innerhalb der Funktion zur Verfügung.

EDIT: Falls auch das nicht geht, poste bitte die Fehlermeldungen, die bei diesem Code entstehen.



Geschrieben von Black Katrin am 30.06.2010 um 23:30:

 

es geht smile keine ahnung wieso aber es klappt smile bist mein held des tages!!!



Geschrieben von Oli am 30.06.2010 um 23:34:

 

Zitat:
Original von Black Katrin
es geht smile keine ahnung wieso aber es klappt smile bist mein held des tages!!!

Wie ich geschrieben hatte. Dein Code war an sich richtig, du hattest nur nicht bedacht (oder vllt auch nicht gewusst), dass Variablen, die außerhalb einer Funktion existieren, nicht automatisch innerhalb einer Funktion vorhanden sind. Um diese Variablen zu erreichen, in deinem Fall $db und $verbindung (beide erforderlich, damit die Abfrage der Datenbank klappt), muss man sie vorher bei der Funktion "anmelden" (sie globalisieren).



Geschrieben von Black Katrin am 30.06.2010 um 23:39:

 

jein... ich sollte es wissen Augenzwinkern aber irgendwie... zuverwirrt aktuell wohl



Geschrieben von Oli am 30.06.2010 um 23:42:

 

Macht nichts, wir haben den Fehler ja schließlich gefunden Augenzwinkern


Forensoftware: Burning Board, entwickelt von WoltLab GmbH