include innerhalb Variable
weblurch
- php
Hallo,
ich möchte eine Zeichenkette per INCLUDE in einer Variablen wieder als Zeichenkette ausgeben.
Hier meine stark vereinfachten Scripte:
Script "aufruf.php"
<?
$ausgabe = "Der rote ".
include ("kette.php");
print ("$ausgabe");
?>
Script "kette.php"
<?
print "Hugo";
?>
Die Ausgabe ist derzeit:
"HugoDer rote 1"
soll aber lauten
"Der rote Hugo".
Wer mag mir dabei helfen?
Hallo weblurch,
Script "aufruf.php"
<?
$ausgabe = "Der rote ".
include ("kette.php");print ("$ausgabe");
?>
Mit include bindest du den Quelltext ein und führst ihn gleich aus, d.h. zuerst wird logischerweise Hugo ausgegeben.
Die Ausgabe ist derzeit:
"HugoDer rote 1"
soll aber lauten
"Der rote Hugo".
in der Datei kette.php sollte folgender PHP-Code stehen:
<?php
$ausgabe.="Hugo";
?>
Dann wird der Text "Hugo" an die (durch den Include bestehende) Variable $ausgabe angehängt.
Wer mag mir dabei helfen?
Ich, ich, ich!!
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hallo weblurch.
Versuch's mal so:
Script "aufruf.php":
<?
$ausgabe = "Der rote ";
echo ($ausgabe);
include ("kette.php");
?>
Script "kette.php":
<?
echo "Hugo";
?>
Mls, H2O
ich möchte eine Zeichenkette per INCLUDE in einer Variablen wieder als Zeichenkette ausgeben.
Wenn du schon include als Funktion missbrauchst, dann musst du den Rückgabewert wie bei einer Funktion auch mit return zurückgeben.
Das klingt gut.
Ich komm aber mit der Ausführung nicht klar.
Kannst Du mir die Anweisung bitte eben in das Script einfügen?
Danke
Ich komm aber mit der Ausführung nicht klar.
Schau mal da, da stehts doch mit Beispiel: http://de.php.net/manual/de/function.include.php
Du musst nur die inkludierte Datei mit return "blafasel"; verlassen.
Danke, klappt.
Hallo,neues Problem:
im geposteten Beispiel klappts, aber im eigentlichen Script gebe ich im Rahmen einer FOREACH-Schleife per print ein Array aus.
Ersetze ich nun print durch return, Erscheint nur noch das erste Feld des Arrays.
Hier das richtige Script, welches includiert werden soll:
<?php
include ("dbopen.php");
foreach ($Wohnung as $ID) {
$ergeb = mysql_query ("SELECT ID_whg, plz_ort, strasse FROM wohnung WHERE ID_whg=$ID");
while ( $daten = mysql_fetch_row ($ergeb)) {
print "<br>";
foreach ( $daten as $feld )
return"\t$feld<br>"; //ursprüngl. print
}
print "<br>";
}
include ("dbclose.php");
?>
Der vollständigkeit halber hier auch das aufruf-script:
<?
$webmaster = "form_wohnung@xxx.de"; /* Adressat */
$absender = "Formmailer-Wohnungsinteressent"; /*Absender */
$betreffwebmaster = 'Wohnungsinteressent'; /*Betreff*/
$koerperwebmaster =
'ABSENDER: $Vorname $Nachname
STRASSE: $Strasse
WOHNORT: $Wohnort
TELEFON: $Telefon
EMAIL: $Email
hat über das Formular WOHNUNGSINTERESSENT der Webseite folgende Nachricht hinterlassen:
Zusätzliche Meldung:
$Meldung
Ich interessiere mich für folgende Wohnung:'.
include ("DIE DATEI UM DIES GEHT");
;
if ($Vorname == "" || $Nachname == "" || $Strasse == "" || $Wohnort == "" || $Telefon == "")
{
header ("Location: 1zimmer2.php");
}
else
{
mail("$webmaster","$betreffwebmaster","$koerperwebmaster\n","FROM: $absender\n");
header ("Location: main_danke.php"); /* Mail wurde versandt, Umleitung auf Dankseite */
}
?>
hi,
im geposteten Beispiel klappts, aber im eigentlichen Script gebe ich im Rahmen einer FOREACH-Schleife per print ein Array aus.
Ersetze ich nun print durch return, Erscheint nur noch das erste Feld des Arrays.
du wurdest doch bereits darauf hingewiesen, dass dein wunsch, include als funktion zu missbrauchen, nicht sonderlich sinnvoll ist - also halte bitte nicht krampfhaft daran fest.
gruß,
wahsaga
Na ja,
ich kenn halt nicht viel von PHP.
Was gibts denn für Alternativen?
Ich bin ja für jeden Vorschlag dankbar.
hi,
ich kenn halt nicht viel von PHP.
Was gibts denn für Alternativen?
Ich bin ja für jeden Vorschlag dankbar.
muss das schon mehrmals in diesem thread gefalle stichwort dir erst auf den kopf fallen, bis du es zur kenntnis nimmst und dich darüber informierst?
gruß,
wahsaga
Nabend weblurch,
Na ja, ich kenn halt nicht viel von PHP.
das läßt sich schnell ändern http://de.php.net/manual/de/
Was gibts denn für Alternativen? Ich bin ja für jeden Vorschlag dankbar.
Grob übers Knie gebrochen: include() erzeugt einen Lesezugriff auf eine weitere Datei, gefolgt von einem Parsen (vgl.: http://de.wikipedia.org/wiki/Parser). Sollte ein PHP-Einschluß (<?php ... ?>) in der eingebundenen Datei sein, werden die Anweisungen umgesetzt. Alles in allem ist dies ein rechenaufwändiger Prozeß.
Genaugenommen brauchst Du nicht mehr als den reinen Lesezugriff auf eine Datei:
########### Dein jetziges Script ###############################
<?php
$str=array(
'&bgr;' =>'Hallo Welt!',
'&time;'=>date("H.i.s"),
'&abs;'=>'Tschüß');
$d ='die.Datei';
$dat =fopen($d,'r');
$text=fread($dat,filezize($d));
fclose($dat);
foreach($str as $k=>$v)
$text=str_replace($k,$v,$text);
echo $text;
?>
########### die.Datei ########################################
<p>&bgr;</p>
<p>
Heute ist ein schöner Tag. Aber es ist schon spät! Wie spät?
Es ist &time;.
</p>
<p>&abs;</p>
###############################################################
Gruß aus Berlin!
eddi
im eigentlichen Script gebe ich im Rahmen einer FOREACH-Schleife per print ein Array aus.
Ersetze ich nun print durch return, Erscheint nur noch das erste Feld des Arrays.
Das hat das return so an sich. Du musst erst die Daten irgendwo sammeln und die erst nach der Schleife dem return übergeben.
Prinzipiell geht das so:
$ergebnis = '';
foreach(... as $wert) {
$ergebnis .= $wert;
}
return $ergebnis;
Im Allgemeines ist es, so auch in PHP, üblich, Funktionalitäten in Funktionen zu kapseln. Diese können durchaus auch in Dateien deklariert sein, die mit include/require eingebunden werden können.
Ich nehme mal an, dass du das include-Prinzip verwendest, weil du es entweder irgendwo abgeschaut hast und es nicht besser weißt, oder weil du damit Probleme mit dem Geltungsbereich von Variablen umgehen willst.
Der optimale Weg ist, Funktionalitäten so zu kapseln, dass sie ohne Verwendung von globalen Variablen, nur aus den übergebenen Parameteren das Ergebnis ermitteln. Versuche das bei der Lösungsfindung zu einem Problem zu berücksichtigen. Du kannst dir dabei auch vorstellen, dass du einem Außenstehenden die Aufgabe übertragen musst, der während seiner Arbeit keinen Zugriff auf deine lokalen Ressourcen hat. Zwischendurch rückfragen scheidet auch aus.
Bei objektorientiertem Programmieren sieht das Ganze etwas anders aus, aber Grundvoraussetzung dafür ist auch hier die gewünschten Funktionalitäten kapseln zu können.