Ja,
Danke für die "Unterrichtsstunde". Werde mir das genau anschauen, functions habe ich ja schon eingesetzt, aber beispielweise weiß ich noch nicht, ob ich auch mehrere Variable übergeben kann usw.
Gruß
newbie1955
foreach - Schleifen und arrays
Einklappen
X
-
Zitat von newbie1955 Beitrag anzeigenich glaube mit Klassen muss ich mich noch mal beschäftigen
Du bist hier:
PHP-Code:<?php
$variable = " Welt<br>\n";
echo "Hallo".$variable;
?>
PHP-Code:<?php
function meineBegruessung($uebergabe) {
return $uebergabe." Welt<br>\n";
}
echo meineBegruessung("Hallo");
?>
PHP-Code:
<?php
class HalloKlasse {
public $eigenschaft1;
private $eigenschaft2 = "Welt";
public function meineBegruessung() {
return $this->eigenschaft1." ".$this->eigenschaft2."<br>\n";
}
}
$erstelle = new HalloKlasse();
$erstelle->eigenschaft1 = "Hallo";
echo $erstelle->meineBegruessung();
?>
Hallo Welt
Hallo Welt
Hallo Welt
Einen Kommentar schreiben:
-
Also,
ich glaube mit Klassen muss ich mich noch mal beschäftigen, werde mal hier
PHP Class Tutorial - PHP Klassen erklärt ein wenig studieren, denn sonst kapiere ich den Unterschied zwischen "in" und "außerhalb" der Klasse auch nicht so recht.
Jetzt hake ich noch am  -Problem rum.
Gruß
newbie1955
Einen Kommentar schreiben:
-
Zitat von newbie1955 Beitrag anzeigenEigentlich muss es doch aber möglich sein, ihm zu sagen: "wenn da nix drin ist, überspring ihn halt und zähle ihn nicht mit."
PHP-Code:if (strlen($lesen[0]->title) > 0 or strlen($lesen[1]->title) > 0) {
foreach ($lesen as $nachricht) {
if ($nachricht != false) {
Edit: Du kannst stattdessen aber auch bestimmen, dass zum Beispiel alle item übersprungen werden, die keinen Titel enthalten.
PHP-Code:if (strlen($lesen[0]->title) > 0 or strlen($lesen[1]->title) > 0) {
foreach ($lesen as $nachricht) {
if ($nachricht->title != false) {
PHP-Code:SimpleXMLElement Object
(
[title] => SimpleXMLElement Object
(
)
[description] => SimpleXMLElement Object
(
)
)
PHP-Code:if ($nachricht != false) {
PHP-Code:if ($nachricht->title != false) {
PHP-Code:if ($nachricht != false) {
Zuletzt geändert von Melewo; 15.06.2013, 15:40.
Einen Kommentar schreiben:
-
Danke
für Deine Mühe. Ich hatte auch etwas versucht mit "continue" und Zaehler hochsetzen, damit er bei fehlendem Inhalt einfach den nächsten item probiert, leider hat das nicht geklappt (leider ohne dass ich kapiert hätte, wieso.)
So wie Du es jetzt geschrieben hat, funktioniert das erstmal, muss nur sehen, dass ich in der Regel nur 10 feeds bekomme, evtl. könnte ich ja die Zahl der gewünschten feeds ebenso aus der Seite an die Feedfunktion.php übergeben wie ich die url übergebe.
Eigentlich muss es doch aber möglich sein, ihm zu sagen: "wenn da nix drin ist, überspring ihn halt und zähle ihn nicht mit."
Will Dich nicht von der Arbeit abhalten, antworte halt, wenn Du Zeit hast. Ich muss da sowieso noch ewig dran rumfummeln wg. der   und sonstiger description-Feingestaltung.
Gruß
newbieZuletzt geändert von newbie1955; 15.06.2013, 10:24.
Einen Kommentar schreiben:
-
Zitat von newbie1955 Beitrag anzeigenaber da sind noch mehr vermurkste items drin, deshalb bricht er dann nach dem 8. ab.
PHP-Code:if ($lesen != false) {
PHP-Code:if (strlen($lesen[0]->title) > 0 or strlen($lesen[1]->title) > 0) {
Wollte mich nie so lange mit dem Script beschäftigen, irgendwie müsste ich mich auch noch um ein paar andere Dinge kümmern. Fehlerkontrolle ist ja gut, umso ausgereifter wird das Script ja. Nur ich wüsste nicht was ich mit dem Ding anfangen könnte, außer so wie das alte Script zum Download anzubieten. Und einige wichtigere Dinge hätte ich schon noch zu tun. Doch wenn ich dann weiß, dieses oder jenes könnte noch verbessert werden, dann lässt mich das zuweilen auch keine Ruhe.
Dabei liegen die Fehler ja eigentlich nicht am Script, sondern an den fehlerhaften Feeds. Letztendlich ist es so wie mit den Browsern, die versuchen auch jede HTML-Seite mit X oder mehr Fehlern noch vernünftig darzustellen.
Einen Kommentar schreiben:
-
Habe
jetzt erstmal $lesen[1] geprüft und dann geht es, aber da sind noch mehr vermurkste items drin, deshalb bricht er dann nach dem 8. ab. werde mal noch ein wenig rumprobieren.
Eine Idee zum  -Eliminieren?
Gruß
newebie1955
Einen Kommentar schreiben:
-
Zitat von newbie1955 Beitrag anzeigenmüsste ich wohl versuchen, den ersten item zu überspringen?
PHP-Code:if ($lesen != false) {
foreach ($lesen as $nachricht) {
PHP-Code:if ($lesen[0] != false and $lesen[1] != false) {
PHP-Code:if ($lesen[1] != false) {
foreach ($lesen as $nachricht) {
Einen Kommentar schreiben:
-
Dann
müsste ich wohl versuchen, den ersten item zu überspringen?
Außerdem versuche ich gerade, aus manchen Descriptions/Summarys usw. noch die überflüssigen Zeichen rauszubekommen. Die Süddeutsche hat zum Beispiel immer zum Schluss ein       dran, das ich mit trim und str_replace auch nicht wegbekomme.
PHP-Code:$desc = ($nachricht->description);
$desc = trim($desc);
str_replace(" ", "", $desc);
Vielleicht werde ich einfach bei jeder Description nach zwei Sätzen Schluss machen, mehr muss da ja sowieso nicht ausgegeben werden. Zumal sowieso bei manchen noch zusätzliche Teasing-Infos ausgegeben werde, die ich nicht brauche (Mehr dazu....)...
Zuz Validität, da muss ich wohl auf HTML geprüft haben...Zuletzt geändert von newbie1955; 14.06.2013, 21:57.
Einen Kommentar schreiben:
-
Zitat von newbie1955 Beitrag anzeigenBei meinem feedcheck kam ein well-formed heraus.
Bei mir war alles gelb, habe es angehängt.
Kann eigentlich nur daran liegen, dass der mit einem leeren Item beginnt. Einiges an Fehlern schluckt und verarbeitet der ja nun schon, doch halt nicht alle Fehler, die andere noch schlucken würden. Hier mal eine Ausgabe mit print_r().
PHP-Code:[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => SimpleXMLElement Object
(
)
[description] => SimpleXMLElement Object
(
)
)
[1] => SimpleXMLElement Object
(
[title] => A...
[description] => S...
[link] => http: ...
)
[2] => SimpleXMLElement Object
(
[title] => A...
[description] => L...
[link] => http: ...
)
PHP-Code:[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => A...
[description] => S...
[link] => http: ...
)
[1] => SimpleXMLElement Object
(
[title] => A...
[description] => L...
[link] => http: ...
)
[2] => SimpleXMLElement Object
(
[title] => S...
[description] => 1....
[link] => http: ...
)
Angehängte DateienZuletzt geändert von Melewo; 14.06.2013, 20:40.
Einen Kommentar schreiben:
-
Habe ich doch auch überprüft
ganz blöd bin ich ja auch nicht. Bei meinem feedcheck kam ein well-formed heraus. (siehe screenshot unten)Angehängte Dateien
Einen Kommentar schreiben:
-
Mal abgesehen davon, dass der Feed invalide ist, was Du ja mit
W3C Feed Validation Service, for Atom and RSS
überprüfen kannst, sehe ich einen möglichen Grund darin, dass im ersten Item nichts enthalten ist. Möglich, dass das Script sich daran verschluckt und dann die restlichen nicht mehr ausgibt.
HTML-Code:<?xml version="1.0" encoding="ISO-8859-1"?> <rss version="2.0"> <channel> <title><![CDATA[...]]></title> <link>http://www....</link> <description/> <language>Deutsch</language> <copyright>copyright</copyright> <webMaster>webmaster</webMaster> <ttl>300000</ttl> <item> <title/> <description/> </item>
Das andere muss ich erst suchen.
Einen Kommentar schreiben:
-
Also
an die Zusage für ein Tutorial kann ich mich nicht erinnern. Das würde wohl noch ein paar Jahre dauern.
Welche allgemeine Frage meinst Du? Also ich glaube, diese Baumstruktur habe ich schon verstanden - auch wenn ich manchmal beim Durchlesen eines Quelltextes nicht so richtig sehe, wo ein node endet und der nächste anfängt, vor allem, wenn nicht richtig geschlossen wird. Ich komme ja auch inzwischen an alle Werte ran, Naja, wer viel dumme Fragen fragt, muss sich dann ja auch den Spott über Rentner-PHPler anhören...(ich will mir ja nix beweisen - und im Alter wird man angeblich wieder wie ein Kid)
Aber mal was anderes, hast Du eine Ahnung, warum der heute-feed nicht mit Deinem feedreader nicht funktioniert? Ist doch rss 2.0?
<![CDATA[ZDFheute | Nachrichten - Startseite]]>
Also beim Betrachten des Quelltextes fällt mir nix Störendes auf.
Gruß newbie1955
P.S. ich glaube gern, dass Kleinverlage sich keine Lektoren leisten können, ich frage mich nur, ob die Autorin dankbar ist für Hinweise auf Druck- und sonstige Fehler (für die nächste Auflage) oder nicht.
Das mit dem NDR habe ich so gemacht:
PHP-Code:$data = file_get_contents('http://www.ndr.de/info/nachrichten287.html');
$doc = new DOMDocument();
$doc->loadHTML($data);
$zaehler = 0;
$descs = $doc->getElementsByTagName("p");
foreach ($descs as $node2)
{
if (($zaehler <= 10)&& ($node2->nodeValue !== '') && ($node2->nodeValue !== NULL)){
$array[$zaehler] = $node2->nodeValue;
$zaehler++;
}
}
$result = $doc->getElementsByTagName("h2");
$zaehler = 0;
foreach ($result as $node)
{
if (($zaehler <= 10)&& ($node->nodeValue !== '') && ($node->nodeValue !== NULL)){
echo '<li><a href="http://www.ndr.de/info/nachrichten287.html" target="_blank" title ="' . $array[$zaehler].'" >'.
$node->nodeValue . '</a></li>';
$zaehler++;
}
}
?>
Zuletzt geändert von newbie1955; 14.06.2013, 19:04.
Einen Kommentar schreiben:
-
Zitat von newbie1955 Beitrag anzeigenZumal ich ohnehin nicht weiß wie man 2 Tags gleichzeitig abruft und in einer Schleife ausgibt?
So weit wie Du stecke ich da nicht in der Materie. Habe zwar etwas probiert, doch für mich geht so etwas bei so übersichtlichen Seiten immer noch am schnellsten, wenn ich da selber einen Ausdruck schreibe.
PHP-Code:<?php
$data = file_get_contents('http://www.ndr.de/info/nachrichten287.html');
function sucheInhalt($daten) {
if (preg_match_all("/<h2>(.+?)<\/h2>.+?<p>(.+?)<\/p>/si", $daten, $fund)){
$inarr = count($fund[1]);
echo "<ul>\n";
for ($i = 0; $i < $inarr; $i++) {
echo "<li><a href=\"http://www.ndr.de/info/nachrichten287.html\" target=\"_blank\">".htmlspecialchars($fund[1][$i], ENT_QUOTES)."</a><br>\n".
htmlspecialchars($fund[2][$i], ENT_QUOTES)."</li>\n";
}
echo "</ul>\n";
}
}
sucheInhalt($data);
?>Zitat von newbie1955 Beitrag anzeigenStudiere jetzt das Buch von Claudia Unkelbach, ich finde es gut, auch wenn es von Fehlern wimmelt.
Zur Frage mal ganz allgemein. Habe heute schon an eine Zeichnung mit einem Baum gedacht. Eigentlich gibt es da schon einige, doch so in "PHP für Rentner" weiß ich jetzt nicht.
Jedenfalls so, dass jeder Rentner das versteht, gleich ob HTML, XHTML oder XML, ob mit DOM oder XPath oder mit SimpleXML, wer nicht bis zum Herbst warten will, bis die Nüsse von alleine vom Baum fallen, muss sich zumindest eine Leiter an den Baum stellen, bis zum nächsten Ast klettern, sich den Zweig greifen, die erste und zweite Nuss pflücken und deren Schale entfern, bevor er an den Kern gelangt. Wenn er die Reihenfolge nicht einhält, fällt er vom Baum oder die Schale bleibt ihm im Hals stecken, in jedem Fall muss eine Error-Mitteilung an den Notdienst übermittelt werden. Also:
Stamm->Ast->Zweig->Früchte->Frucht->Fruchtschale->Kern
HTML-Code:<wurzel> <spezies>lateinischer Name</spezies> <subspezies>lateinischer Name</subspezies> <material>Biomasse Holz</material> <stamm> <ast> <zweig> <fruechte> <frucht="reif"> <fruchtschale> <inhalt>Walnusskern</inhalt> </fruchtschale> </frucht> <frucht="unreif"> <fruchtschale> <inhalt>Walnusskern</inhalt> </fruchtschale> </frucht> </fruechte> </zweig> </ast> </stamm> </wurzel>
Früchte->Frucht->Fruchtschale->Kern
HTML-Code:<wurzel> <spezies>lateinischer Name</spezies> <subspezies>lateinischer Name</subspezies> <material>Biomasse Holz</material> <fruechte> <frucht="reif"> <fruchtschale> <inhalt>Walnusskern</inhalt> </fruchtschale> </frucht> <frucht="unreif"> <fruchtschale> <inhalt>Walnusskern</inhalt> </fruchtschale> </frucht> </fruechte> </wurzel>
Und wenn Du es auf diese Art und Weise nicht verstehst, dann kapituliere ich.Zuletzt geändert von Melewo; 14.06.2013, 18:42.
Einen Kommentar schreiben:
-
Geschafft
habe erfolgreich meine "array-Experimente" vertieft und den <p>-tag erstmal in ein array gepackt und dann als title ausgegeben. war gar nicht so schwer.
Gruß
newbie1955
Einen Kommentar schreiben:
Einen Kommentar schreiben: