ich hab so etwas:
$stripedlines;
function striphtmlout($filetoOpen){
$fd = fopen ($filetoOpen, "r");
while (!feof ($fd)){
global $stripedlines;
$buffer = fgets($fd, 4096);
$lines = $buffer;
$stripedlines = strip_tags($lines);
}
fclose ($fd);
return stripedlines;
}
seltsamerweise wird mit $stripedlines = strip_tags($lines);
die globale var $stripedlines nicht überschrieben - return liedert mir auf jeden fall etwas leeres zurück - woran kann das liegen ?
ok beim return das $ vergessen - klappt aber immer noch nicht…
mein aufruf:
$file = "test.html";
echo striphtmlout($file);
Meine PHP-Zeit liegt zwar schon ein wenig zurück und globale Variablen hab ich eigentlich nie benötigt… aber warum muss die Variable denn überhaupt global sein? Kannst du nicht einfach das lokale Ergebnis zurückgeben?
Meine PHP-Zeit liegt zwar schon ein wenig zurück und globale Variablen hab ich eigentlich nie benötigt… aber warum muss die Variable denn überhaupt global sein? Kannst du nicht einfach das lokale Ergebnis zurückgeben?
hmm - weil es nicht klappt [img]
http://fb18.triphoenix.de/gfx/26.gif[/img]
$file = "test.html";
function striphtmlout($filetoOpen){
$fd = fopen ($filetoOpen, "r");
while (!feof ($fd)){
$buffer = fgets($fd, 4096);
$lines = $buffer;
$stripedlines = strip_tags($lines);
}
fclose ($fd);
return $stripedlines;
}
echo striphtmlout($file);
-zeigt mir nur ne leere seite… (muss ja aber auch so sein schließlich ist stripedlines innerhalb der while-schleife declariert und instanziiert…),
nur warum kann ich dann nicht überschreiben?!
Mach mal aus dem = in $stripedlines = strip_tags($lines); ein .=
Außerdem würde ich die global-Anweisung an den Funktionsstart und nicht in die While-Schleife legen.
das geglobal hatte ich auch schon außerhalb der while gesetzt - hatte alleine nichts geholfen aber der .= - tip war goldrichtig!
weiss jetzt nicht warum es unter php nicht anders geht, aber auch gut…
danke
weiss jetzt nicht warum es unter php nicht anders geht, aber auch gut…
= weist der Variable jedes Mal einen neuen Wert zu. .= Fügt einen String an.
das geglobal hatte ich auch schon außerhalb der while gesetzt
Das Global sollte aus Performancegründen trotzdem außerhalb der While-Schleife stehen. Funktioniert genau so. :-)
Damit ich auch noch was dazu lerne: Das heißt ohne global geht es nicht?
function striphtmlout($fileToOpen)
{
$stripedlines = "";
$fd = fopen ($fileToOpen, "r");
while (!feof ($fd))
{
$buffer = fgets($fd, 4096);
$lines = $buffer;
$stripedlines .= strip_tags($lines);
}
fclose ($fd);
return $stripedlines;
}
sollte funktionieren ..
Wenn du das irgendwo in ner Klasse benutzen willst:
class Test
{
function Test()
{
$this->stripedlines = "";
}
function striphtmlout($fileToOpen)
{
$fd = fopen ($fileToOpen, "r");
while (!feof ($fd)){
$buffer = fgets($fd, 4096);
$lines = $buffer;
$this->stripedlines .= strip_tags($lines);
}
fclose ($fd);
return $this->stripedlines;
}
}
$foo = new Test();
echo $foo->striphtmlout("datei.html");
warum funktioniert so etwas:
preg_match_all($pattern, $page, $treffer, PREG_OFFSET_CAPTURE);
print_r($treffer[1][0]);
zeigt mir dann die arraystruktur.
aber so etwas nicht:
echo($treffer[1][0]);
?
krieg da immer nur Array als Output…
Edit: [Smilies] in Text gewandelt.
warum funktioniert so etwas:
preg_match_all($pattern, $page, $treffer, PREG_OFFSET_CAPTURE);
print_r($treffer(1)(0));
zeigt mir dann die arraystruktur.
aber so etwas nicht:
echo($treffer (1)(0) );
?
krieg da immer nur Array als Output…
edit: jetzt mit (,) statt Kästchen - wie kann man die hier escapen?
Damit ich auch noch was dazu lerne: Das heißt ohne global geht es nicht?
Wie Tilo gezeigt hat. Ansonsten ist - nur auf den Ausschnitt bezogen - der Aufbau natürlich auch noch knapper möglich:
$fd = fopen ('test.html', 'r');
while (!feof ($fd)) {
echo strip_tags(fgets($fd, 4096));
}
fclose ($fd);
Wäre das Gleiche, dann halt fast ganz ohne Variable.
edit: jetzt mit (,) statt Kästchen - wie kann man die hier escapen?
Die Checkbox [Smilies] in Text wandeln anwählen, gleich unter den Smilies.
Also das Echo hatte mich eben wirklich gewundert, weshalb ich es selbst probiert habe, bis ich dann die Klammern darum bemerkte. :-) Echo ist keine Funktion, die gehören da nicht hin:
echo $treffer[1][0];
Edit: Oh, funktioniert auch mit. PHP Manuell sagt, das auch. Brauchen nicht hingeschrieben werden, können aber. Muss bei Dir einen anderen Grund haben, wieso das nicht geht.
$text = "17-02-06, 10-03-83, 24-12-00";
preg_match_all("/(\d+)-(\d+)-(\d+)/", $text, $array);
print $array[0][0]
echo ($array[0][0]);
Gibt zwei Mal 17-02-06 aus.
warum funktioniert so etwas:
preg_match_all($pattern, $page, $treffer, PREG_OFFSET_CAPTURE);
print_r($treffer(1)(0));
zeigt mir dann die arraystruktur.
aber so etwas nicht:
echo($treffer (1)(0) );
?
krieg da immer nur Array als Output…
edit: jetzt mit (,) statt Kästchen - wie kann man die hier escapen?
Für den Array-Zugriff verwendet man eckige Klammern []
Also $treffer[1][0]
Weiß er doch. Er wusste bloß nicht, wie wie er die eckigen Klammern hier nutzen kann.
Ups, dann hab ioch das überlesen :-)