replace frage :)

bspainkf36

Erfahrenes Mitglied
hi leute :)

ich hab mir ein kleines newsscript gebaut :) und möchte da noch ein kleines feature einbauen :)

also wenn man ein bild aus der galarie einfügen will, musste man bissher:

PHP:
<a href="http://www.party-mix.net/blubb/karatebomber/karatebomber1e.jpg" target=_"blank">
  <img src="http://www.party-mix.net/blubb/karatebomber/karatebomber1.jpg" border="1" style="border-style:solid; border-width:1px; border-color:black;">
</a>

schreiben :) ich möchte es mir ein wenig leichter machen :) also nehmen wir mal an, ich möche ein bild einfügen und dieses ist in der galarie tabelle mit der id:555 eigetragen ...

ich wollte es so machen, dass man bei den news einfach


postet und das newsscript den rest übernimmt :)

habt ihr vielleicht ein paar tipps an mich wie ich es am besten angehen sollte ?

danke euch für die hilfe :)

gruß kon
 
PHP:
$beitrag = eregi_replace("([ \r\n])http://([^ ,\r\n]*)","\\1http://\\2",$beitrag);
// oder
$beitrag = eregi_replace("\\[url\\]www.([^\\[]*)\\[img\\]www.([^\\[]*)\\[/img\\]\\[/url\\]","<a href=\"http://www.\\1\" target=_blank><img src=\"http://www.\\2\" border=\"0\"></a>",$beitrag);

zur erklärung: emm hab scho lang nimma geproggt, fang grad wieder an aber so sollte es funktionieren :)
bei genauer erklärung schau doch mal auf php.net bei der function eregi_replace nach da steht das mit den 1 und 2 genauer beschrieben also dass du nur einen stringteil ersetzt und sowas =)

hope it helps
 
Ich gehe einfach mal davon aus, dass die Bilder in /images/ liegen und *.jpg heissen, das ganze wird

PHP:
<?php
$text = preg_replace("/\\\[BILD\\\](.*)\\\[\\\/BILD\\\]/is", "<a href=\"/images/\\\\1.jpg\" target=\"_blank\"><img src=\"/images/\\\\1.jpg\" /></a>", $text);
?>

Ich hoffe dass das Forum meinen Code nicht wiedermal zerlegt.
 
das is fast das was ich suche ! gibt es denn eine möglichkeit diese [ img]bla[ /img] durch von einer funktion zurückgegebenen code zu ersetzen ? ich möchte diese schreibweise in meinem forum benutzen um es usern zu ermöglichen einfach bilder einzubinden. ich will aber verhindern, dass sie mir das layout kaputt machen ... deswegen hab ich ne funktion, die die bildbreite abfragt und entsprechend bei zu großem wert den code so ausgibt, dass die bilder gestaucht werden:

PHP:
<?php

function pictest($picurl)
{
$info = getimagesize($picurl);

if($info[0] <= 530)
{
echo "<br><img src=\"";
echo $picurl . "\" border=\"0\"><br>";
}
else
{
echo $picurl . "\" border=\"0\" width=\"500\"><br>";
}
}
?>

ich hab aber keine ahnung wie ich in meinem $comment string den ich vom user kriege die [ img]url[ /img] durch pictest(url) erstze! geht das mit diesem preg_replace ? und wenn ja wie?
 
Zuletzt bearbeitet:
PHP:
<?php
$text = preg_replace("/\\\[BILD\\\](.*)\\\[\\\/BILD\\\]/is", "pictest(\\\\1)", $text);
?>

So sollte das funktionieren, hoffe ich! :) Allerdings musst du, wenn du deine Funktion so verwenden willst, wie sie ist, die URL zu dem Bild vollständig angeben, also mit /images/.
 
yeah ! du hast verstanden was ich wollte =D der ausdruck klappt und ersetzt das alles richtig aber die funktion wird nich ausgeführt :( der schreibt halt einfach pictest(url) hin aber benutzt sie nicht ... woran liegt das ?
 
PHP:
<?php
$text = preg_replace("/\[BILD\](.*)\[\/BILD\]/ise", "pictest(\\\\1)", $text);
?>

Hab das ganze jetzt berichtigt.
Muss nur am schluss ein e im Pattern rein (e = execute).
Dann wird die Funktion im String Replace ausgeführt...
 
leider hat der code immernoch nicht funktioniert. er hat zwar jetzt anscheinend irgendwas ausgeführt nur nix ausgegebn... jetzt hat der liebe meisterbrau mir diese variante zusammengeschustert die auch funktioniert :
PHP:
$comment = preg_replace("=\[img\](.*)\[/img\]=ise", "pictest(\"\\1\")", $comment);
endlich klappt der kram !
 
mir wär das zu kompliziert mit dem regEx:

PHP:
 $text = str_replace("[BILD]","<img src=\"",$text);
 $text = str_replace("[/BILD]","\" alt=\"bild\">",$text);
 
Original geschrieben von mXa
mir wär das zu kompliziert mit dem regEx:

PHP:
 $text = str_replace("[BILD]","<img src=\"",$text);
 $text = str_replace("[/BILD]","\" alt=\"bild\">",$text);

Das ist leider eine total unsichere Frickellösung, wenn man vergisst das [BILD]-Tag zu schliessen hat man sofort den ganzen Quelltext versaut...
 
Zurück