tag:forum.selfhtml.org,2005:/self Regulärer Ausdruck – SELFHTML-Forum 2009-11-07T15:19:30Z https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404158#m1404158 AirMax 2009-10-29T09:43:53Z 2009-10-29T09:43:53Z Regulärer Ausdruck <p>Hallo zusammen</p> <p>möchte alle Einträge im String $array auf die Endung ".jpg" hin durchsuchen und in $ausschluss speichern.</p> <pre><code class="block language-php"> <span class="token function">preg_match_all</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"/(\.jpg$)/"</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token variable">$array</span><span class="token punctuation">,</span><span class="token variable">$ausschluss</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$ausschluss</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Aber $ausschluss ist nach der suche "NULL". Wo in meinem Muster ist denn der Fehler?</p> <p>Danke & Gruss<br> AirMax</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404225#m1404225 Beat http://www.elcappuccino.ch/ehome-factory/news 2009-10-29T10:06:51Z 2009-10-29T10:06:51Z Regulärer Ausdruck <blockquote> <pre><code class="block language-php"></code></pre> </blockquote> <blockquote> <p>preg_match_all("/(.jpg$)/"),$array,$ausschluss);<br> var_dump($ausschluss);</p> </blockquote> <pre><code class="block"> > Wo in meinem Muster ist denn der Fehler? Konzentriere dich auf das, was dem Muster folgt. mfg Beat -- ><o(((°>           ><o(((°>    <°)))o><                     ><o(((°>o Der Valigator leibt diese Fische </code></pre> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404159#m1404159 suit suit@rebell.at http://rebell.at/ 2009-10-29T10:38:46Z 2009-10-29T10:38:46Z Regulärer Ausdruck <blockquote> <p>möchte alle Einträge im String $array auf die Endung ".jpg" hin durchsuchen und in $ausschluss speichern.</p> </blockquote> <p>Ein String der $array heisst? Wohlkaum - wenn du <a href="https://forum.selfhtml.org/?t=192140&m=1281966" rel="noopener noreferrer">unsinnige Doppelpostings</a> künftig unterlässt, wird es einfacher dir zu helfen.</p> <blockquote> <p>Aber $ausschluss ist nach der suche "NULL". Wo in meinem Muster ist denn der Fehler?</p> </blockquote> <p><a href="http://community.de.selfhtml.org/zitatesammlung/zitat1418" rel="nofollow noopener noreferrer">Dein Fehler ist der Ansatz</a>.</p> <p>Lass mich dein Vorhaben erraten:</p> <p>Du hast offensichtlich ein Array mit Dateinamen.<br> Du willst alles Rausschmeißen, was nicht die Endung .jpg hat (oder umgekehrt).</p> <p>Nutze <a href="http://php.net/manual/en/function.array-filter.php" rel="noopener noreferrer">array_filter()</a> und prüfe ob der in <a href="http://php.net/manual/en/function.pathinfo.php" rel="noopener noreferrer">pathinfo()</a> (extension) enthaltene Wert <a href="http://php.net/manual/en/function.in-array.php" rel="noopener noreferrer">in_array()</a> (du willst vermutlich .jpg, .jpeg und ggf .jpe finden) deiner erlaubten (oder verbotenen) Dateiendungen ist. zusätzlich solltest du dann noch mit <a href="http://php.net/manual/en/function.getimagesize.php" rel="noopener noreferrer">getimagesize()</a> den MIME-Type prüfen, ob dieser wirklich image/jpeg ist - die Endung selbst ist eigentlich nicht viel Wert.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404217#m1404217 AirMax 2009-10-29T11:10:29Z 2009-10-29T11:10:29Z Regulärer Ausdruck <p>Hi Suit</p> <blockquote> <p>wenn du <a href="https://forum.selfhtml.org/?t=192140&m=1281966" rel="noopener noreferrer">unsinnige Doppelpostings</a> künftig unterlässt, wird es einfacher dir zu helfen.</p> </blockquote> <p>Ich finde, es ist kein Doppelposting. Mir geht's hierbei um die "Sache" und nicht um ein "Projekt". Das sind in meinen Augen 2 unterschiedliche Paar Schuhe. Wenn Du es anders siehst: "Entschuldigung" für's Doppelposting.</p> <p>"Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems."</p> <p>Allerdings!</p> <blockquote> <p>Du hast offensichtlich ein Array mit Dateinamen.<br> Du willst alles Rausschmeißen, was nicht die Endung .jpg hat (oder umgekehrt).</p> </blockquote> <p>In diesem Fall will ich alles rausschmeissen, was die Endung ".jpg" hat.</p> <blockquote> <p>Nutze <a href="http://php.net/manual/en/function.array-filter.php" rel="noopener noreferrer">array_filter()</a> und prüfe ob der in <a href="http://php.net/manual/en/function.pathinfo.php" rel="noopener noreferrer">pathinfo()</a> (extension) enthaltene Wert <a href="http://php.net/manual/en/function.in-array.php" rel="noopener noreferrer">in_array()</a> (du willst vermutlich .jpg, .jpeg und ggf .jpe finden) deiner erlaubten (oder verbotenen) Dateiendungen ist. zusätzlich solltest du dann noch mit <a href="http://php.net/manual/en/function.getimagesize.php" rel="noopener noreferrer">getimagesize()</a> den MIME-Type prüfen, ob dieser wirklich image/jpeg ist - die Endung selbst ist eigentlich nicht viel Wert.</p> </blockquote> <p>Werde mir mal die links anschauen.</p> <p>Danke & Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404166#m1404166 AirMax 2009-10-29T13:12:51Z 2009-10-29T13:12:51Z Regulärer Ausdruck <p>Hi Suit,</p> <p>hab mir Deine links mal durchgelesen. Im Grunde geht es darum, wie Du schon richtig sagtest, einen Array zu durchsuchen. Aber wenn ich mir die Dokumentation zu "in_array()" durchlese, scheint es, als könne man nur Elemente im Array suchen die genau dem Wortlaut der $needle-Variable entsprechen:</p> <pre><code class="block language-php"><span class="token variable">$needle</span> <span class="token operator">=</span> <span class="token string double-quoted-string">".svg"</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token variable">$needle</span><span class="token punctuation">,</span><span class="token variable">$array</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"'.svg' ist enthalten"</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Aber ich kenne ja nicht genau den Wortlaut der Array-Elemente. Ich weiss nur, dass ich Elemente suche, die mit .svg enden.</p> <p>Weisst, was ich meine?</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404160#m1404160 AirMax 2009-11-01T11:37:21Z 2009-11-01T11:37:21Z Regulärer Ausdruck <p>Hi</p> <blockquote> <p>Nutze <a href="http://php.net/manual/en/function.array-filter.php" rel="noopener noreferrer">array_filter()</a> und prüfe ob der in <a href="http://php.net/manual/en/function.pathinfo.php" rel="noopener noreferrer">pathinfo()</a> (extension) enthaltene Wert <a href="http://php.net/manual/en/function.in-array.php" rel="noopener noreferrer">in_array()</a> (du willst vermutlich .jpg, .jpeg und ggf .jpe finden) deiner erlaubten (oder verbotenen) Dateiendungen ist. zusätzlich solltest du dann noch mit <a href="http://php.net/manual/en/function.getimagesize.php" rel="noopener noreferrer">getimagesize()</a> den MIME-Type prüfen, ob dieser wirklich image/jpeg ist - die Endung selbst ist eigentlich nicht viel Wert.</p> </blockquote> <p>Habe nochmals an der Suchmaske gefeilt und habe jetzt die Lösung gefunden. Allerdings finde ich, dass preg_match besser zur Überprüfung von Benutzereingaben oder allgemein von dynamischen Inhalten passt. Da ich allerdings klar definierte Eigenschaften überprüfen möchte (Extensions), benutze ich doch lieber Anweisungen, die sich genau auf mein Ziel beziehen, z.B. $bar=pathinfo($foo); $bar['extension'].</p> <p>Das geht also auch:</p> <pre><code class="block language-php"> <span class="token variable">$auswahl</span> <span class="token operator">=</span> <span class="token function">array_filter</span><span class="token punctuation">(</span><span class="token variable">$array</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'callback'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">callback</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span><span class="token function">preg_match</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/^(.+\.jpg|.+\.jpeg|.+\.jpe)$/i'</span><span class="token punctuation">,</span> <span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token variable">$imageinfo</span><span class="token punctuation">[</span>mime<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'image/jpeg'</span><span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>PS: Das war mein erstes Suchmuster, was ich gebastelt habe und auch funktioniert *schulterklopf*</p> <p>Gruß</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404161#m1404161 suit suit@rebell.at http://rebell.at/ 2009-11-01T15:54:45Z 2009-11-01T15:54:45Z Regulärer Ausdruck <blockquote> <p>Allerdings finde ich, dass preg_match besser zur Überprüfung von Benutzereingaben oder allgemein von dynamischen Inhalten passt.</p> </blockquote> <p>Dein Ausdruck ist aber unsinnig</p> <p>/.(jpeg|jpe|jpg)$/i oder /.jp(eg|e|g)$/i (beides nicht getestet) würde völlig ausreichen.</p> <blockquote> <p>Da ich allerdings klar definierte Eigenschaften überprüfen möchte (Extensions), benutze ich doch lieber Anweisungen, die sich genau auf mein Ziel beziehen, z.B. $bar=pathinfo($foo); $bar['extension'].</p> </blockquote> <p>Nein tust du nicht - du prüst mit preg_match den vollständigen Dateinamen, nicht nur die Extension.</p> <p>Zwar ist die Lösung mit einem regulären Ausdruck eleganter, aber imho weniger leicht wartbar - besonders, wenn es um Benutzereingaben geht.</p> <blockquote> <p>Das geht also auch:</p> </blockquote> <p>Ja - aber ihmo weniger einfach verständlich (wenn man mit PCRE nicht so fit ist) und auf dauer eben Fehleranfälliger.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404162#m1404162 AirMax 2009-11-02T11:02:52Z 2009-11-02T11:02:52Z Regulärer Ausdruck <blockquote> <p>Zwar ist die Lösung mit einem regulären Ausdruck eleganter, aber imho weniger leicht wartbar - besonders, wenn es um Benutzereingaben geht.</p> </blockquote> <p>Na ja, Benutzereingabe haben ja oft feste Muster, die in der Regel nicht mehr so schnell geändert werden. Z.B. für die Überprüfung einer eingegebenen Mailadresse in einem Formular. Wenn man allerdings ab und zu auch andere Extensions zulassen wollen würde, wäre die Fehlerquote u.U. schon höher.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404163#m1404163 suit suit@rebell.at http://rebell.at/ 2009-11-02T15:09:18Z 2009-11-02T15:09:18Z Regulärer Ausdruck <blockquote> <p>Na ja, Benutzereingabe haben ja oft feste Muster, die in der Regel nicht mehr so schnell geändert werden.</p> </blockquote> <p>Ja, das gemeinsame feste Muster von Benutzereingaben ist "irgendwie" :)</p> <p>Bau mal irgendwo testweise ein Datumsfeld in einem Formular ein, mit der bitte um TT.MM.YYYY als Datumsformat. Selbst an solchen Dingen scheitern sehr viele Nutzer.</p> <blockquote> <p>Wenn man allerdings ab und zu auch andere Extensions zulassen wollen würde, wäre die Fehlerquote u.U. schon höher.</p> </blockquote> <p>Genau aus dem Grund würde ich prinzipiell immer die Idiotensichere, schöne und vergoldete Variante verwenden - und keine ggf. potentiell Fehleranfällige, elegante (außer ich weiß, dass es defintiv so bleibt und nur ich oder andere Fachmänner(-frauen) dran herumfingern.</p> <p>Du hattest doch bereits eine schöne Lösung, warum musste die wieder raus? :D</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404164#m1404164 AirMax 2009-11-02T15:17:51Z 2009-11-02T15:17:51Z Regulärer Ausdruck <blockquote> <p>Du hattest doch bereits eine schöne Lösung, warum musste die wieder raus? :D</p> </blockquote> <p>Musste sie ja nicht. Sie wird bald ihren "Dienst aufnehmen" ;-)<br> Hab' lediglich ein bisschen herumgespielt...</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404165#m1404165 suit suit@rebell.at http://rebell.at/ 2009-11-03T08:59:46Z 2009-11-03T08:59:46Z Regulärer Ausdruck <blockquote> <p>Musste sie ja nicht. Sie wird bald ihren "Dienst aufnehmen" ;-)</p> </blockquote> <p>Na dann hab ich den Post falsch verstanden :D</p> <blockquote> <p>Hab' lediglich ein bisschen herumgespielt...</p> </blockquote> <p>Das ist nicht verkehrt :)</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404167#m1404167 suit suit@rebell.at http://rebell.at/ 2009-10-29T13:20:13Z 2009-10-29T13:20:13Z Regulärer Ausdruck <blockquote> <p>Aber ich kenne ja nicht genau den Wortlaut der Array-Elemente. Ich weiss nur, dass ich Elemente suche, die mit .svg enden.</p> <p>Weisst, was ich meine?</p> </blockquote> <p>Darum hab' ich dich auch auf die Existenz von path_info() hingewiesen.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404168#m1404168 suit suit@rebell.at http://rebell.at/ 2009-10-29T13:20:51Z 2009-10-29T13:20:51Z Regulärer Ausdruck <blockquote> <p>path_info()</p> </blockquote> <p>pathinfo()</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404169#m1404169 AirMax 2009-10-29T15:21:35Z 2009-10-29T15:21:35Z Regulärer Ausdruck <p>Sei mir nicht böse, Suit, aber ich sitze seit zwei Stunden vor Deinem Kommentar, habe den Satz "Nutze array_filter() und prüfe ob der in pathinfo() (extension) enthaltene Wert in_array() (du willst vermutlich .jpg, .jpeg und ggf .jpe finden) deiner erlaubten (oder verbotenen) Dateiendungen ist." bestimmt 20x gelesen (inkl. der dazugehörigen Dokumentationen) und habe bis jetzt nicht verstanden, wie der Ablauf ist. Ich kappier's einfach nicht :-(</p> <p>Ich verstehe einfach nicht, wie ich meinen array mit den Dateinamen mit der erlaubten Dateiendungen abgleichen soll.<br> Also nochmal: Im array ist alles drin, was im Verzeichnis liegt: alle möglichen Dateien. Davon will ich entweder Dateien mit bestimmter Endung (z.B. *mov, *svg) oder ganz konkrete Elemente aus dem array rausschmeissen.<br> Wenn ich "pathinfo() (extension)" anwende, bekomme ich einen array mit allen Dateiendungen im Verzeichnis. Das sieht wahrscheinlich so aus:</p> <p>array<br> (<br>     [0] => jpg<br>     [1] => svg<br>     [2] => mov<br>     [3] => php<br> )</p> <p>So! jetzt prüfe ich, ob die Inhalte meines array mit den Dateien (den ich mir überigens mit "readdir" bla bla generiere und nicht mit "pathinfo() PATHINFO_BASENAME" - "pathinfo" scheint mir aber die viel simplere Variante zu sein) mit den Inhalten des Array $dateiendungen übereinstimmt. Tut es aber nicht, denn "index.php" ist etwas anderes als "php".</p> <p>Ich glaube, ich habe einen riesigen Denkfehler.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404170#m1404170 suit suit@rebell.at http://rebell.at/ 2009-10-29T15:33:55Z 2009-10-29T15:33:55Z Regulärer Ausdruck <blockquote> <p>Ich glaube, ich habe einen riesigen Denkfehler.</p> </blockquote> <p>Ja :)</p> <p>Dein Array welches du mit readdir erhälst übergibst du an filter_array()</p> <p>filter_array() ruft als callback-Funktion eine Funktion auf, nennen wir sie "is_valid_extension".</p> <p>function is_valid_extension($str) {<br>   // prüfe, ob der in pathinfo (PATHINFO_EXTENSION) einhaltene Wert (BASENAME interessiert dich nicht, du willst ja nur die Extension prüfen) in deinem Konfigurationsarray mit den Erlaubten Extensions enthalten ist.<br>   // wenn ja: return true, ansonsten return false<br> }</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404171#m1404171 AirMax 2009-10-29T16:40:04Z 2009-10-29T16:40:04Z Regulärer Ausdruck <blockquote> <p>function is_valid_extension($str) {<br>   // prüfe, ob der in pathinfo (PATHINFO_EXTENSION) einhaltene Wert (BASENAME interessiert dich nicht, du willst ja nur die Extension prüfen) in deinem Konfigurationsarray mit den Erlaubten Extensions enthalten ist.<br>   // wenn ja: return true, ansonsten return false<br> }</p> </blockquote> <p>function is_valid_extension($erlaubt, $extensions) {<br>     if ($erlaubt = $extensions) {<br>         return "true";<br> }<br>     else {<br>         return "false";<br> }<br> is_valid_extension("jpg", pathinfo(".",PATHINFO_EXTENSION));</p> <p>So in etwa? Ich habe immer Mühe mit den Klammern und Anführungszeichen...<br> (Jetzt habe ich mir aber einen abgebrochen. Und ich könnte wetten, es ist immer noch nicht richtig)</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404172#m1404172 AirMax 2009-10-29T16:49:18Z 2009-10-29T16:49:18Z Regulärer Ausdruck <p>Das war nix. Nochmal:</p> <p>$erlaubt = "jpg";</p> <blockquote> <p>function is_valid_extension($array) {<br>     if (in_array($erlaubt, $array) {<br>         return "true";<br> }<br>     else {<br>         return "false";<br> }</p> </blockquote> <p>echo array_filter($array, "is_valid_extension")</p> <p>Oder so ähnlich.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404173#m1404173 suit suit@rebell.at http://rebell.at/ 2009-10-29T17:00:35Z 2009-10-29T17:00:35Z Regulärer Ausdruck <blockquote> <p>Oder so ähnlich.</p> </blockquote> <p>Ja, so ähnlich - nur dass die callback-Funktion von array_filter jeden wert des Arrays einzeln durchgereicht bekommt :)</p> <p>ergo musst du prüfen, ob die Extension des durchgereichten Werts in den erlaubten Werten enthalten ist.</p> <p>Aktuell prüfst du, ob der erlaubte Wert (ein string) in einem array (welches eigentlich ein String ist) enthalten ist.</p> <p>Ein paar debug-Ausgaben wären nicht verkehrt.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404174#m1404174 AirMax 2009-10-29T17:15:29Z 2009-10-29T17:15:29Z Regulärer Ausdruck <blockquote> <p>Aktuell prüfst du, ob der erlaubte Wert (ein string) in einem array (welches eigentlich ein String ist) enthalten ist.</p> </blockquote> <p>Aber um das geht es ja. Der erlaubte Wert ist "jpg". Vertausche ich $needle mit $haystack etwa?</p> <blockquote> <p>Ein paar debug-Ausgaben wären nicht verkehrt.</p> </blockquote> <p>Ja, ich weiss. Aber ich muss erst mal das Grundgerüst auf die Reihe bekommen</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404175#m1404175 suit suit@rebell.at http://rebell.at/ 2009-10-29T17:23:13Z 2009-10-29T17:23:13Z Regulärer Ausdruck <blockquote> <blockquote> <p>Aktuell prüfst du, ob der erlaubte Wert (ein string) in einem array (welches eigentlich ein String ist) enthalten ist.<br> Aber um das geht es ja. Der erlaubte Wert ist "jpg". Vertausche ich $needle mit $haystack etwa?</p> </blockquote> </blockquote> <p>ja - du sollst prüfen, ob in der aktuellen Wert (die Extension, des aktuellen Arrayeintrags, der an die callbackfunktion übergeben wurden) in deinem array erlaubter extensions enthaöten ist.</p> <blockquote> <blockquote> <p>Ein paar debug-Ausgaben wären nicht verkehrt.<br> Ja, ich weiss. Aber ich muss erst mal das Grundgerüst auf die Reihe bekommen</p> </blockquote> </blockquote> <p>Genau dafür sind Kontrollaufgaben aber hilfreich :)</p> <pre><code class="block language-php"><span class="token variable">$meinarray</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'foo.jpg'</span> <span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'bar.txt'</span> <span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'baz.jpg'</span> <span class="token punctuation">)</span> <span class="token function">array_filter</span><span class="token punctuation">(</span><span class="token variable">$meinarray</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'callbackfunktion'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>führt 3x die callbackfunktion auf</p> <p>sieht also etwa so aus:</p> <pre><code class="block language-php"> <span class="token function">callbackfunktion</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'foo.jpg'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">callbackfunktion</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'bar.txt'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">callbackfunktion</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'baz.jpg'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">callbackfunktion</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token variable">$foo</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'foo.jpg'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> ergebnis<span class="token punctuation">:</span> <span class="token variable">$meinarray</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token operator">=></span> <span class="token string single-quoted-string">'foo.jpg'</span> <span class="token punctuation">)</span> </code></pre> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404176#m1404176 AirMax 2009-10-29T17:39:07Z 2009-10-29T17:39:07Z Regulärer Ausdruck <blockquote> <p>ja - du sollst prüfen, ob in der aktuellen Wert (die Extension, des aktuellen Arrayeintrags, der an die callbackfunktion übergeben wurden) in deinem array erlaubter extensions enthaöten ist.</p> </blockquote> <p>Ich hab $needle und $haystack verwechselt, weil ich dachte, der zu durchsuchende "array" ist der, der an die funktion geschickt wird. Dabei ist der zu durchsuchende array ja der jenige, der die mögliches extensions definiert - in meine Fall ja kein array sondern ein string ... so doof!</p> <blockquote> <p>Genau dafür sind Kontrollaufgaben aber hilfreich :)</p> </blockquote> <p>hab grad kein PHP bei mir ;)</p> <blockquote> <pre><code class="block language-php"></code></pre> </blockquote> <p>$meinarray</p> <blockquote> <p>(<br>     [0] => 'foo.jpg'<br>     [1] => 'bar.txt'<br>     [2] => 'baz.jpg'<br> )</p> <p>array_filter($meinarray, 'callbackfunktion');</p> </blockquote> <pre><code class="block"> > führt 3x die callbackfunktion auf > > sieht also etwa so aus: > ~~~php > callbackfunktion('foo.jpg'); > callbackfunktion('bar.txt'); > callbackfunktion('baz.jpg'); > > function callbackfunktion($foo) { >   if ($foo == 'foo.jpg') { >     return true; >   } else { >     return false; >   } > } > > ergebnis: > > $meinarray > ( >     [0] => 'foo.jpg' > ) </code></pre> <p>Danke für Deine Hilfe!</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404177#m1404177 AirMax 2009-10-30T12:12:28Z 2009-10-30T12:12:28Z Regulärer Ausdruck <p>Hi Suit</p> <p>Habe mir noch mal die Sache durch den Kopf gehen lassen und habe jetzt die Lösung. Und sie funktioniert sogar.</p> <pre><code class="block language-php"> <span class="token comment">//Das muss ich noch mit "readdir" anpassen. </span> <span class="token variable">$array</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'foo.jpg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'bar.txt'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'baz.tif'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">callback</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$info</span> <span class="token operator">=</span> <span class="token function">pathinfo</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">strtolower</span><span class="token punctuation">(</span><span class="token variable">$info</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'extension'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'jpg'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token function">print_r</span> <span class="token punctuation">(</span><span class="token function">array_filter</span><span class="token punctuation">(</span><span class="token variable">$array</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'callback'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404178#m1404178 suit suit@rebell.at http://rebell.at/ 2009-10-30T12:25:13Z 2009-10-30T12:25:13Z Regulärer Ausdruck <blockquote> <p>Habe mir noch mal die Sache durch den Kopf gehen lassen und habe jetzt die Lösung. Und sie funktioniert sogar.</p> </blockquote> <blockquote> <p>if (strtolower($info['extension']) == 'jpg') {</p> </blockquote> <p>Jep - sieht gut aus.</p> <p>Aber wie gesagt - ein jpeg kann auch jpe oder jpeg als Endung haben (darum der Hinweis mit in_array). Zudem kann etwas, was .jpg am Schluss stehen haben und gar kein JPEG sein - darum der Hinweis mit getimagesize und dem MIME-Type.</p> <p>Das solltest du zusätzlich noch einbauen.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404179#m1404179 AirMax 2009-10-30T12:42:10Z 2009-10-30T12:42:10Z Regulärer Ausdruck <blockquote> <p>Das solltest du zusätzlich noch einbauen.</p> </blockquote> <p>Ja, ich versuch's. Melde mich dann wieder ;)</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404180#m1404180 AirMax 2009-10-30T14:28:45Z 2009-10-30T14:28:45Z Regulärer Ausdruck <p>So, da bin ich wieder und hab's gepackt:</p> <pre><code class="block language-php"> <span class="token variable">$array</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'foo.jpg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'bar.txt'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'baz.tif'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'jpg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'blub.jpeg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'bla.jpe'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">callback</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$stringinfo</span> <span class="token operator">=</span> <span class="token function">pathinfo</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$bildinfo</span> <span class="token operator">=</span> <span class="token function">getimagesize</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$extensions</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'jpg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'jpeg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'jpe'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token function">strtolower</span><span class="token punctuation">(</span><span class="token variable">$stringinfo</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'extension'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$extensions</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">elseif</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token variable">$bildinfo</span><span class="token punctuation">[</span>mime<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'image/jpeg'</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token variable">$auswahl</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token function">array_filter</span><span class="token punctuation">(</span><span class="token variable">$array</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'callback'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">print_r</span> <span class="token punctuation">(</span><span class="token variable">$auswahl</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404181#m1404181 suit suit@rebell.at http://rebell.at/ 2009-10-30T14:37:51Z 2009-10-30T14:37:51Z Regulärer Ausdruck <blockquote> <p>$stringinfo = pathinfo($foo);<br> $bildinfo = getimagesize($foo);</p> </blockquote> <p>Und das funktioniert? solange die Bilder im entsprechenden Verzeichnis liegen ja, aber in anderen fällen stimmt der Pfad nicht :)</p> <blockquote> <p>$extensions = array('jpg','jpeg','jpe');</p> </blockquote> <p>hier könntest du noch einen kommaspearierten String draus machen und das array mittels explode() und trim bilden - dann ist es einfacher wartbar (auch für normale Menschen). Zudem würde ich die Variable besser beschreiben "allowed_extensions" oder "valid_extensions" damit man sofort erkennt, worum es sich handelt.</p> <p>$valid_extensions = 'txt,doc, xml';</p> <blockquote> <p>if (!in_array(strtolower($stringinfo['extension']), $extensions)) {</p> </blockquote> <p>die Bedingung innerhalb eines if kennt auch <a href="http://www.php.net/manual/de/language.operators.logical.php" rel="nofollow noopener noreferrer">logische Operatoren</a> - kein grund für den else-if-KRam</p> <blockquote> <p>return false;<br> }<br>   elseif (($bildinfo[mime]) == 'image/jpeg') {</p> <p>return true;<br> }</p> </blockquote> <p>wenn das elseif nicht zutrifft, hat deine funktion keinen Rückgabewert. Da die Callback-Funktion nur "true" durchlässt und "nicht gesetzt" != true ist, stimmts trotzdem - der form halber würde ich aber dediziert immer true oder false zurückgeben.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404216#m1404216 AirMax 2009-10-30T14:51:42Z 2009-10-30T14:51:42Z Regulärer Ausdruck <blockquote> <blockquote> <p>$stringinfo = pathinfo($foo);<br> $bildinfo = getimagesize($foo);<br> Und das funktioniert? solange die Bilder im entsprechenden Verzeichnis liegen ja, aber in anderen fällen stimmt der Pfad nicht :)</p> </blockquote> </blockquote> <p>Möchte diese Funktion unter dem Namen "teaserrandom.php" im Bilderordner ablegen. Und jetzt sind wir wieder bei meinem alten thread: Ich möchte nämlich dem nun erhaltenen Bilderauswahl-Array neue folrtlaufende Schlüssel zuteilen (0 bis X) und dann random(en). Der Zufallswert wird dann im Cookie mit dem Pfad /media/ gespeichert und betrifft dann nur noch dieses Verzeichnis (Danke an Edgar für den Tipp).</p> <blockquote> <blockquote> <p>$extensions = array('jpg','jpeg','jpe');<br> hier könntest du noch einen kommaspearierten String draus machen und das array mittels explode() und trim bilden - dann ist es einfacher wartbar (auch für normale Menschen). Zudem würde ich die Variable besser beschreiben "allowed_extensions" oder "valid_extensions" damit man sofort erkennt, worum es sich handelt.</p> </blockquote> </blockquote> <p>Ja, dran schleifen kann ich immer noch. Am besten noch vergolden :)</p> <blockquote> <p>der form halber würde ich aber dediziert immer true oder false zurückgeben.</p> </blockquote> <p>Stimmt, muss noch ein <code class="language-php"><span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span><span class="token punctuation">;</span></code> ranhängen.</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404211#m1404211 AirMax 2009-10-30T15:01:37Z 2009-10-30T15:01:37Z Regulärer Ausdruck <blockquote> <blockquote> <p>$stringinfo = pathinfo($foo);<br> $bildinfo = getimagesize($foo);<br> Und das funktioniert? solange die Bilder im entsprechenden Verzeichnis liegen ja, aber in anderen fällen stimmt der Pfad nicht :)</p> </blockquote> </blockquote> <p>Ich möchte diese "teaserrandom.php" im Bilderordner ablegen. Und nun sind wir wieder bei meinem alten thread: Ich möchte den Einträgen im nun erhaltenen "jpeg/jpg/jpe*image/jpeg-Bilderauswahl"-Array neue Schlüssel zuweisen (0 bis X) und dann random(en). Den Wert speichere ich dann von diesem Verzeichnis aus in einem Cookie. Damit erreiche ich, dass das Cookie nur bei Auffrufen für dieses Verzeichnis gesendet wir (Danke an Edgar für den Tipp!).</p> <blockquote> <blockquote> <p>$extensions = array('jpg','jpeg','jpe');<br> hier könntest du noch einen kommaspearierten String draus machen und das array mittels explode() und trim bilden - dann ist es einfacher wartbar (auch für normale Menschen). Zudem würde ich die Variable besser beschreiben "allowed_extensions" oder "valid_extensions" damit man sofort erkennt, worum es sich handelt.</p> </blockquote> </blockquote> <p>Ja, dran feilen kann ich ja immer noch. Am besten noch vergolden :)</p> <blockquote> <p>wenn das elseif nicht zutrifft, hat deine funktion keinen Rückgabewert. Da die Callback-Funktion nur "true" durchlässt und "nicht gesetzt" != true ist, stimmts trotzdem - der form halber würde ich aber dediziert immer true oder false zurückgeben.</p> </blockquote> <p>Stimmt, muss noch ein <code class="language-php"><span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span><span class="token punctuation">}</span></code>dranhängen.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404209#m1404209 Airmax 2009-10-30T15:18:23Z 2009-10-30T15:18:23Z Regulärer Ausdruck <blockquote> <p>die Bedingung innerhalb eines if kennt auch <a href="http://www.php.net/manual/de/language.operators.logical.php" rel="nofollow noopener noreferrer">logische Operatoren</a> - kein grund für den else-if-KRam</p> </blockquote> <p>Ich weiss, vorher hatte ich die auch benutzt. Aber die Zeile in der Bedingung wurde dann ziemlich lang und unübersichtlich. Ausserden vergass ich zig mal eine der 5. Klammern am Ende, um die Bedingung zu schliessen...</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404182#m1404182 AirMax 2009-10-31T12:40:22Z 2009-10-31T12:40:22Z Header-Informationen <p>Hi Suit,</p> <blockquote> <blockquote> <p>$stringinfo = pathinfo($foo);<br> $bildinfo = getimagesize($foo);<br> Und das funktioniert? solange die Bilder im entsprechenden Verzeichnis liegen ja, aber in anderen fällen stimmt der Pfad nicht :)</p> </blockquote> </blockquote> <p>Du hattest wiedermal recht. Solange sich alles in ein & dem selben Verzeichnis abspielt abspielt gibt es kein Problem. Aber nachdem ich versucht habe das "teaserrandom"-Skript eine Ebene höher in die index.php per include() einzubinden, findet er die Bilder nicht mehr. Frage: muss ich bei den Pfadangaben IMMER von dem Verzeichnis ausgehen, von dem ich ein Skript später aufrufe, auch wenn es ich einem ganz anderen Verzeichnis liegt?</p> <p>Und dann noch was anderes:<br> Zu Testzwecken habe ich die index.php, die teaserrandom.php und sämtlich Bilder in ein Verzeichnis gepackt, um das oben angeführt Problem zu vermeiden. Wenn ich die index.php (in der ja die teaserrandom.php included ist) aufrufe kommt eine Fehlermeldung, mit der ich überhaupt nichts anfangen kann.</p> <p>"Cannot modify header information - headers already sent by (output started at /Users/Thomas/Sites/test/media/index.php:7) in /Users/Thomas/Sites/test/media/teaserrandom.php on line 69"</p> <p>Hier mal die entsprechenden Zeilen den Dateien:<br> index.php:</p> <p>7  <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>description<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.....<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code><br> 8  <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>page-topic<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.....<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code><br> 9  <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>keywords<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.....<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code><br> 10 <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>author<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.....<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code><br> 11 <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>revisit-after<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>.....<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span></code></p> <p>und teaserrandom.php:</p> <p>69 <code class="language-php"><span class="token function">setcookie</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">,</span> <span class="token variable">$zufall</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></p> <p>Kannst Du, oder jemand anderes natürlich, mir einen Tipp geben? ;-)</p> <p>Danke und Gruß<br> AirMax</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404208#m1404208 AirMax 2009-10-31T13:22:58Z 2009-10-31T13:22:58Z Header-Informationen <blockquote> <p>"Cannot modify header information - headers already sent by (output started at /Users/Thomas/Sites/test/media/index.php:7) in /Users/Thomas/Sites/test/media/teaserrandom.php on line 69"</p> </blockquote> <p>Da das Cookie ja über den header geschickt wird muss da wie eine Art "Platzhalter" für das Cookie noch eingebaut werden. Jemand eine Idee, wo ich mich da erkundigen kann?</p> <p>Danke</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404183#m1404183 Edgar Ehritt 2009-10-31T21:39:18Z 2009-10-31T21:39:18Z Header-Informationen <p>Hallo AirMax,</p> <blockquote> <p>"Cannot modify header information - headers already sent by (output started at /Users/Thomas/Sites/test/media/index.php:7) in /Users/Thomas/Sites/test/media/teaserrandom.php on line 69"<br> <code class="language-php"><span class="token function">setcookie</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">,</span> <span class="token variable">$zufall</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></p> </blockquote> <p>wichtig ist hier nicht, was in der teaserrandom.php "on line 69" steht sondern, was in der index.php Zeile 7 (ff.) steht. Dort begann nämlich die Ausgabe an den Browser. PHP ist so gestrickt, dass es im normalen Zustand erst alle Header senden will, dann die Ausgabe erledigt. Da setcookie() einen HTTP-Header setzt, der offensichtlich nach der ersten Ausgabe auftaucht, kommt es zu der Meldung und der Header wird schlichtweg nicht mehr gesendet. Dafür aber die Fehlermeldung. Du musst also im Steuerfluss dafür sorgen, dass jedwede Ausgabe vorm include('teaserrandom.php') in der index.php unterbleibt. (Ausgaben können dabei auch Fehlermeldungen sein, da diese, nachdem ein Fehler vom Interpreter festgestellt wurde, augenblicklich zur Ausgabe gereicht wird. Ist diese Ungepuffert, führt das zur sofortigen Ausgabe. vgl. <a href="http://www.php.net/manual/de/ref.outcontrol.php" rel="nofollow noopener noreferrer">Ausgabepufferung</a>)</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404184#m1404184 AirMax 2009-10-31T22:59:25Z 2009-10-31T22:59:25Z Header-Informationen <p>Hallo Eddi</p> <blockquote> <p>Header wird schlichtweg nicht mehr gesendet. Dafür aber die Fehlermeldung. Du musst also im Steuerfluss dafür sorgen, dass jedwede Ausgabe vorm include('teaserrandom.php') in der index.php unterbleibt.</p> </blockquote> <p>Danke für Deinen Tipp. Habe <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> jetzt an den Anfang der index.php gesetzt und jetzt funzt es. Musste allerding die Ausgabe der 'teaserrandom.php' in einer Variable speichern, die ich in der index.php nach dem include abrufe. Vorher hatte ich ja genau an der Stelle includiert, an der ich die Ausgabe der 'teaserrandom.php' verwenden wollte.</p> <p>Aber ich habe immer noch das Problem mit den Verzeichnispfaden: Sind die Pfade in der zu includierenden Datei hinfällig? Also ... muss ich immer von dem Verzeichnis ausgehen, in das includiert wird. Das würde ja heißen, dass die Includ-Datei nicht "referenziert" wird, sondern per "copy / paste" eingebunden wird. Das wäre echt schade. Kann man die Verzeichnisangaben nicht irgendwie aufrecht erhalten?</p> <p>Gruß<br> AirMax</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404185#m1404185 Edgar Ehritt 2009-10-31T23:31:49Z 2009-10-31T23:31:49Z Header-Informationen <p>Re:</p> <blockquote> <p>Danke für Deinen Tipp. Habe <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> jetzt an den Anfang der index.php gesetzt und jetzt funzt es. Musste allerding die Ausgabe der 'teaserrandom.php' in einer Variable speichern, die ich in der index.php nach dem include abrufe. Vorher hatte ich ja genau an der Stelle includiert, an der ich die Ausgabe der 'teaserrandom.php' verwenden wollte.</p> </blockquote> <p>Kleiner Trick:</p> <p><code class="language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'x.inc'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span></code></p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment"># Datei x.inc </span> <span class="token keyword">return</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Huhu'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <blockquote> <p>Aber ich habe immer noch das Problem mit den Verzeichnispfaden: Sind die Pfade in der zu includierenden Datei hinfällig? Also ... muss ich immer von dem Verzeichnis ausgehen, in das includiert wird. Das würde ja heißen, dass die Includ-Datei nicht "referenziert" wird, sondern per "copy / paste" eingebunden wird. Das wäre echt schade. Kann man die Verzeichnisangaben nicht irgendwie aufrecht erhalten?</p> </blockquote> <p>Mache Dir klar, wo das Programm tatsächlich stattfindet und was ein ausgelagerter Programmteil ist! Von dieser Sicht aus ist das Verhalten von PHP sehr viel sinnvoller. Dennoch bist Du nicht vom Verhalten PHPs abhängig. Arbeite mit der <a href="http://de3.php.net/manual/de/language.constants.predefined.php" rel="nofollow noopener noreferrer">vordefinierten Konstante</a> <code class="language-php"><span class="token constant">__DIR__</span></code>!</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404194#m1404194 AirMax 2009-11-02T11:23:13Z 2009-11-02T11:23:13Z Header-Informationen <blockquote> <p>Danke für Deinen Tipp. Habe <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> jetzt an den Anfang der index.php gesetzt und jetzt funzt es. Musste allerding die Ausgabe der 'teaserrandom.php' in einer Variable speichern, die ich in der index.php nach dem include abrufe. Vorher hatte ich ja genau an der Stelle includiert, an der ich die Ausgabe der 'teaserrandom.php' verwenden wollte.</p> <p>Kleiner Trick:</p> <p><code class="language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'x.inc'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span></code></p> <pre><code class="block language-php"></code></pre> </blockquote> <p><?php</p> <blockquote> <h3>Datei x.inc</h3><p>return('Huhu');<br> ?></p> </blockquote> <pre><code class="block"> So einfach, wie ich es mir vorgestellt habe ging es eben doch nicht. Nochmals das Problem: Ich habe die 'index.php', in der der html-Code ist. Ab ca. der Mitte, nachdem schon html ausgegeben wurde, soll die 'teaserrandem.php' includiert werden, die die headerinfo für den Cookie enthält. Und jetzt kommt eben das Problem, dass die headerinfos für 'index.php' schon gesendet wurden und deshalb mein includierter Cookie-header Pech hat. Dann hatte ich mal den include an den Anfang gesetzt, bevor html ausgegeben wird. Und siehe da, es hat funktioniert. Aber das nützte mir nicht viel, da ich ja, layoutbedingt, den include zu einem späteren Zeitpunkt brauche. Zunächst dachte ich, dass ich was an der Logik HTML und PHP ändern müsste. Aber ich finde, dass sie so ok ist. Jetzt habe ich aber was gefunden, was vielleicht funktionieren könnte. Die Zauberworte sind `ob_start();`{:.language-php} und `ob_end_flush();`{:.language-php}. Ich includiere meine 'teaserrandom.php' gleich zu Beginn, jedoch leite ich die PHP-Ausgabe (bis auf den Cookie-header!) nicht an den Clienten, sondern in einen internen cache um. Erst wenn ich die PHP-Ausgabe zu einem späteren Zeitpunkt benötige, lese ich sie mit `ob_end_flush();`{:.language-php} aus. Klingt gut. Wenn jemand noch eine andere Idee ... bitte melden! Danke & Gruss AirMax </code></pre> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404186#m1404186 AirMax 2009-11-05T11:02:52Z 2009-11-05T11:02:52Z Header-Informationen <p>Arbeite mit der <a href="http://de3.php.net/manual/de/language.constants.predefined.php" rel="nofollow noopener noreferrer">vordefinierten Konstante</a> <code class="language-php"><span class="token constant">__DIR__</span></code>!</p> <p>Habe jetzt mal versucht die relativen Pfade füd die Includes in "relative" absolute Pfade mit __DIR__ umzuwandeln. Das funktioniert auch gut bei Verzeichnissesn, die unter dem Verzeichnis liegen, aus dem der include aufgerufen wird. Gibte es auch eine Möglichkeit, __DIR__ für Verzeichnisse anzuwenden, die über dem aktuellen Verzeichnis liegen? Hab' mal folgendes probiert:</p> <p><code class="language-php"><span class="token keyword">include</span> <span class="token constant">__DIR__</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'../bin/include.inc'</span><span class="token punctuation">;</span></code></p> <p>Er findet aber die include.inc nicht. Gibt's da was?</p> <p>Danke & Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404187#m1404187 Edgar Ehritt 2009-11-06T02:29:25Z 2009-11-06T02:29:25Z Header-Informationen <p>Hallo AirMax,</p> <blockquote> <blockquote> <p>Arbeite mit der <a href="http://de3.php.net/manual/de/language.constants.predefined.php" rel="nofollow noopener noreferrer">vordefinierten Konstante</a> <code class="language-php"><span class="token constant">__DIR__</span></code>!</p> </blockquote> </blockquote> <p>An sich hatte ich Dein Problem so verstanden, dass teaserrandom.php in einem Unterverzeichnis liegt und Du die Aufgaben des Programmteils innerhalb dieser Datei mit dessen Verzeichnis verbinden wolltest. Somit könnte teaserrandom.php mittels <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token constant">__DIR__</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> in Verschiedene Verzeichnisse abgelegt werden, wobei jeweils nur der Pfad im aufrufenden Programm angepasst werden müsste:</p> <p>/test<br>   |<br>   |-/media<br>   |  |<br>   |  |-0.jpg<br>   |  |<br>   |  |-1.jpg<br>   |  |<br>   |  <code>-teaserrandom.php   |   |-/img   |  |   |  |-2.jpg   |  |   |  |-3.jpg   |  |   |  |-4.jpg   |  |   |  </code>-teaserrandom.php<br>   |<br>   `-index.php</p> <p>In der index.php, was hierbei den Aufruf enthält, kann nun ohne weiter Anpassungen in teaserrandom.php zwischen <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'media/teaserrandom.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> und <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'img/teaserrandom.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> gewechselt werden.</p> <blockquote> <p>Habe jetzt mal versucht die relativen Pfade füd die Includes in "relative" absolute Pfade mit __DIR__ umzuwandeln. Das funktioniert auch gut bei Verzeichnissesn, die unter dem Verzeichnis liegen, aus dem der include aufgerufen wird. Gibte es auch eine Möglichkeit, __DIR__ für Verzeichnisse anzuwenden, die über dem aktuellen Verzeichnis liegen? Hab' mal folgendes probiert:</p> <p><code class="language-php"><span class="token keyword">include</span> <span class="token constant">__DIR__</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'../bin/include.inc'</span><span class="token punctuation">;</span></code></p> <p>Er findet aber die include.inc nicht. Gibt's da was?</p> </blockquote> <p><a href="http://de2.php.net/manual/de/function.realpath.php" rel="nofollow noopener noreferrer">realpath()</a> ist Dein Freund, wenn es um sonstige Probleme im Zusammenhang mit Pfaden ginge - jedoch nicht hier. Und Du solltest im Gebrauch dringend darauf achten, dass <code class="language-php"><span class="token constant">__DIR__</span></code> eine Pfadangabe ohne abschließenden Slash "/" enthält. Es muss also <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token constant">__DIR__</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/../bin/include.inc'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> lauten, was nicht mehr bedeutet, als dass solche Pfadangaben im Beispiel mit include() selbständig aufgelöst werden.</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404189#m1404189 AirMax 2009-11-06T08:54:46Z 2009-11-06T08:54:46Z Header-Informationen <p>Hallo Eddi,</p> <p>erstmal vielen Dank für Dein Durchhaltevermögen in diesem Post!</p> <blockquote> <p>An sich hatte ich Dein Problem so verstanden, dass teaserrandom.php in einem Unterverzeichnis liegt und Du die Aufgaben des Programmteils innerhalb dieser Datei mit dessen Verzeichnis verbinden wolltest. Somit könnte teaserrandom.php mittels <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token constant">__DIR__</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> in Verschiedene Verzeichnisse abgelegt werden, wobei jeweils nur der Pfad im aufrufenden Programm angepasst werden müsste:</p> </blockquote> <p>Du hast recht. So war es mal gedacht. 'teaserrandom.php' sollte im 'media'-Ordner abgelegt werden. Nachdem ich aber die 'teaserrandom.php' in die 'index.php' eingebunden hatte, musste ich mit Erstaunen feststellen, dass 'teaserrandom.php' nicht einmal mehr die Bilder im eigenen Verzeichnis finden konnte. Hatte dafür das Verzeichnis einnmal mit <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> und testweise mit <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token constant">__DIR__</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> angegeben. Selbst der Cookie, der ja ursprünglich nur für das Verzeichnis 'media' gelten sollte, verlor seinen Sinn. Das gültige Verzeichnis für ihn war, nach dem include, nicht mehr '/media', sondern '/'. Also war meine Überlegung: Wenn alles nach dem include vom Hauptverzeichnis ausgeht, kann ich meine Struktur gleich so ändern:</p> <p>/<br> |<br> |-- php<br> |    |<br> |    |- teaserrandom.php<br> |    <code>- andere "PHP-Geschichten" (z.B. formmailer) | |-- media |    | |    |- 0.jpg |    |- 1.jpg |    |- 2.jpg |    </code>- usw.<br> |<br> `- index.php</p> <p>Hatte dann für <code class="language-php"><span class="token function">opendir</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> folgendes verwendet: <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span><span class="token operator">.</span> <span class="token string single-quoted-string">'/media'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>. So funktioniert es. Wobei mir Deine Ideen bezügl. der 'teaserrandom.php' (im gleichen Verzeichnis wie die Bilder) und des Cookies (nur für Verzeichnis '/media' gültig) absolut sympathisch sind.</p> <blockquote> <p>In der index.php, was hierbei den Aufruf enthält, kann nun ohne weiter Anpassungen in teaserrandom.php zwischen <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'media/teaserrandom.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> und <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'img/teaserrandom.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> gewechselt werden.</p> </blockquote> <p>Und genau das hat eben nicht funktioniert. Siehe oben. Ich kann es ja nochmals probieren. Vielleicht habe ich ja auch einen Fehler gemacht. Aber das Thema <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> im Zusammenhang mit Pfadeangaben scheint es wirklich insich zu haben.<br> Übrigens muss ich immer auf dirname(__FILE__) umsteigen, da die PHP-Version bei meinem Webhoster < 5.3.0 ist.</p> <blockquote> <p>Und Du solltest im Gebrauch dringend darauf achten, dass <code class="language-php"><span class="token constant">__DIR__</span></code> eine Pfadangabe ohne abschließenden Slash "/" enthält. Es muss also <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token constant">__DIR__</span> <span class="token operator">.</span> <span class="token string single-quoted-string">'/../bin/include.inc'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> lauten, was nicht mehr bedeutet, als dass solche Pfadangaben im Beispiel mit include() selbständig aufgelöst werden.</p> </blockquote> <p>Stimmt, dass kann man immer ganz gut an der Fehlermeldung sehen, dass ein Slash fehlt.</p> <p>Gruss<br> AirMax</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404188#m1404188 AirMax 2009-11-06T08:59:46Z 2009-11-06T08:59:46Z Header-Informationen <p>Ach übrigens...<br> Ich habe jetzt mal meine ganzen Validierungsbedingungen für meinen 'Bilderarray', wie von Dir vorgeschlagen, an den Anfang verschoben. Und es klappt prima. Mein Lieblingswort ist 'Effizienz'!</p> <p>Freu' mich wie bolle ...</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404190#m1404190 Edgar Ehritt 2009-11-06T19:14:29Z 2009-11-06T19:14:29Z Header-Informationen <p>Re:</p> <blockquote> <p>...Nachdem ich aber die 'teaserrandom.php' in die 'index.php' eingebunden hatte, musste ich mit Erstaunen feststellen, dass 'teaserrandom.php' nicht einmal mehr die Bilder im eigenen Verzeichnis finden konnte. Hatte dafür das Verzeichnis einnmal mit <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> und testweise mit <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token constant">__DIR__</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code> angegeben. Selbst der Cookie, der ja ursprünglich nur für das Verzeichnis 'media' gelten sollte, verlor seinen Sinn. Das gültige Verzeichnis für ihn war, nach dem include, nicht mehr '/media', sondern '/'. Also war meine Überlegung: Wenn alles nach dem include vom Hauptverzeichnis ausgeht, kann ich meine Struktur gleich so ändern:</p> <p>/<br> |<br> |-- php<br> |    |<br> |    |- teaserrandom.php<br> |    <code>- andere "PHP-Geschichten" (z.B. formmailer) | |-- media |    | |    |- 0.jpg |    |- 1.jpg |    |- 2.jpg |    </code>- usw.<br> |<br> `- index.php</p> <p>Hatte dann für <code class="language-php"><span class="token function">opendir</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> folgendes verwendet: <code class="language-php"><span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'DOCUMENT_ROOT'</span><span class="token punctuation">]</span><span class="token operator">.</span> <span class="token string single-quoted-string">'/media'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code>. So funktioniert es. Wobei mir Deine Ideen bezügl. der 'teaserrandom.php' (im gleichen Verzeichnis wie die Bilder) und des Cookies (nur für Verzeichnis '/media' gültig) absolut sympathisch sind.</p> </blockquote> <p>Na dann machen wir jetzt mal Nägel mit Köpfen:</p> <p>Ich hatte Dir ein völlig <a href="http://forum.de.selfhtml.org/archiv/2009/10/t192027/#m1281351" rel="nofollow noopener noreferrer">anderes Konzept</a>, da ja Dein Lieblingswort Effizienz ist, vorgeschlagen, was jetzt umgesetzt wird. (Punkt) Vergiss include()!</p> <p>Aus der index.php wird, soweit nicht andere Verarbeitungen mittels PHP vorzunehmen sind, ein ganz normals HTML-Dokument Namens index.xhtml. In dieser wird der Verweis im Objekt hart codiert:</p> <pre><code class="block language-php"> <span class="token operator"><</span><span class="token keyword type-declaration">object</span> data<span class="token operator">=</span><span class="token string double-quoted-string">"php/teaserrandom.php"</span> type<span class="token operator">=</span><span class="token string double-quoted-string">"image/svg+xml"</span> id<span class="token operator">=</span><span class="token string double-quoted-string">"footerbg"</span><span class="token operator">></span> <span class="token operator"><</span>param name<span class="token operator">=</span><span class="token string double-quoted-string">"src"</span> value<span class="token operator">=</span><span class="token string double-quoted-string">"php/teaserrandom.php"</span> <span class="token operator">/</span><span class="token operator">></span> <span class="token operator"><</span><span class="token operator">/</span><span class="token keyword type-declaration">object</span><span class="token operator">></span> </code></pre> <p>Wobei wir eh nur von JPEG-Bildern reden, also reicht ein einfaches <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>php/teaserrandom.php<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Zufallsbild<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span></code>.</p> <p>teaserrandom.php könnte nunmehr seine Kekse fürs Verzeichnis /php verteilen, was aber genauso effizient wie auch nebensächlich ist. Dein o. g. Gliederung des Webs ist nicht auf diese spezifische Aufgabe, cookies effizient zu setzen, ausgerichtet. (Das ließe sich bspw. mit <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" rel="nofollow noopener noreferrer">mod_rewrite</a> gerade rücken. Aber alles zu seiner Zeit.)<br>  Seinerseits wird in teaserrandom.php das Verzeichnis /media dann so ausgelesen und die Bilder direkt ausgeben:</p> <pre><code class="block language-php"><span class="token comment"># Header vorangesetzt </span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Content-Type: image/jpeg'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$handler</span><span class="token operator">=</span><span class="token function">opendir</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'../media'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token variable">$dateien</span> <span class="token operator">=</span> <span class="token function">readdir</span><span class="token punctuation">(</span><span class="token variable">$handler</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">!==</span><span class="token constant boolean">false</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$dateien</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.jpg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'jpeg'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'.jpe'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$array</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$dateien</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token function">closedir</span><span class="token punctuation">(</span><span class="token variable">$handler</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment"># Weiter geht es dann mit </span> <span class="token variable">$zufall</span><span class="token operator">=</span><span class="token function">array_rand</span><span class="token punctuation">(</span><span class="token variable">$auswahl</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token keyword">isset</span><span class="token punctuation">(</span><span class="token variable">$_COOKIE</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token function">setcookie</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">,</span> <span class="token variable">$zufall</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$file</span><span class="token operator">=</span><span class="token string single-quoted-string">'../media/'</span><span class="token operator">.</span><span class="token variable">$auswahl</span><span class="token punctuation">[</span><span class="token variable">$zufall</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span><span class="token punctuation">{</span> <span class="token variable">$file</span><span class="token operator">=</span><span class="token string single-quoted-string">'../media/'</span><span class="token operator">.</span><span class="token variable">$auswahl</span><span class="token punctuation">[</span><span class="token variable">$_COOKIE</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment"># Größe noch dem Browser mitgeteilt </span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Content-Length: '</span><span class="token operator">.</span><span class="token function">filesize</span><span class="token punctuation">(</span><span class="token variable">$file</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment"># Inhalt ausgeben </span> <span class="token function">readfile</span><span class="token punctuation">(</span><span class="token variable">$file</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Mehr ist es letztendlich gar nicht. Wenn Du es soweit zum laufen gebracht hast, können wir uns dann nochmals um die Effizienz der Kekse kümmern.</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404191#m1404191 AirMax 2009-11-07T13:50:56Z 2009-11-07T13:50:56Z Header-Informationen <p>Hallo Eddi</p> <blockquote> <p>Na dann machen wir jetzt mal Nägel mit Köpfen:</p> </blockquote> <p>Ja genau, wir müssen uns langsam beeilen. Denn bald ist der Post im Archiv und dann ist Schluss ... ;)</p> <blockquote> <p>Ich hatte Dir ein völlig <a href="http://forum.de.selfhtml.org/archiv/2009/10/t192027/#m1281351" rel="nofollow noopener noreferrer">anderes Konzept</a>, da ja Dein Lieblingswort Effizienz ist, vorgeschlagen, was jetzt umgesetzt wird. (Punkt) Vergiss include()!</p> </blockquote> <p>Ich schlage vor, dass ich ab jetzt zweigleisig fahre. Beide Varianten abwäge und dann am Ende schaue, für welche ich mich entscheide.</p> <pre><code class="block language-php"> <span class="token operator">></span> <span class="token comment"># Header vorangesetzt </span> <span class="token operator">></span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Content-Type: image/jpeg'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">></span> <span class="token comment"># Größe noch dem Browser mitgeteilt </span> <span class="token operator">></span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Content-Length: '</span><span class="token operator">.</span><span class="token function">filesize</span><span class="token punctuation">(</span><span class="token variable">$file</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token operator">></span> <span class="token comment"># Inhalt ausgeben </span> <span class="token operator">></span> <span class="token function">readfile</span><span class="token punctuation">(</span><span class="token variable">$file</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Nur mal so aus Interesse: Ist es notwendig dem Browser mitzuteilen, was er jetzt empfängt? Also ein jpeg-Bild, dass XX kb groß ist. Spielt das eine Rolle für ihn? Ist es dann besser bei jeglichen Daten, die der Browser durch PHP mittels readfile() empfängt zu deklarieren.</p> <blockquote> <p>Mehr ist es letztendlich gar nicht. Wenn Du es soweit zum laufen gebracht hast, können wir uns dann nochmals um die Effizienz der Kekse kümmern.</p> </blockquote> <p>Hab's mal angepasst und es ist jetzt am Laufen. Und jetzt geht's mit den Keksen weiter? Schön!</p> <p>Gruß</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404192#m1404192 Edgar Ehritt 2009-11-07T14:45:53Z 2009-11-07T14:45:53Z Header-Informationen <p>Re:</p> <blockquote> <blockquote> <p>header('Content-Type: image/jpeg');<br> header('Content-Length: '.filesize($file));<br> readfile($file);</p> </blockquote> <p>Nur mal so aus Interesse: Ist es notwendig dem Browser mitzuteilen, was er jetzt empfängt? Also ein jpeg-Bild, dass XX kb groß ist. Spielt das eine Rolle für ihn? Ist es dann besser bei jeglichen Daten, die der Browser durch PHP mittels readfile() empfängt zu deklarieren.</p> </blockquote> <p>Für solche Fragen zu Content-Length ist die <a href="http://tools.ietf.org/html/rfc2616#section-14.13" rel="nofollow noopener noreferrer">RFC 2616 Abs. 14.13</a> zuständig. Demnach ist es empfohlen, nicht ohne triftigen Grund auf diesen Header zu verzichten. Da jedoch Daten, die PHP ausgibt allermeist gestückelt werden (chunked transfer encoding), kann man darauf verzichten (vgl. <a href="http://tools.ietf.org/html/rfc2616#section-4.4" rel="nofollow noopener noreferrer">Abs. 4.4</a>).</p> <p>Auf die Angabe des Content-type-Header kann nur aus triftigen Gründen verzichtet werden. Eine begünstigende Einschränkung, wie Bei Content-Length gibt es jedoch nicht (vgl. <a href="http://tools.ietf.org/html/rfc2616#section-7.2.1" rel="nofollow noopener noreferrer">Abs. 7.2.1</a>).</p> <blockquote> <blockquote> <p>Mehr ist es letztendlich gar nicht. Wenn Du es soweit zum laufen gebracht hast, können wir uns dann nochmals um die Effizienz der Kekse kümmern.</p> </blockquote> <p>Hab's mal angepasst und es ist jetzt am Laufen. Und jetzt geht's mit den Keksen weiter? Schön!</p> </blockquote> <p>Das einfachste wäre teaserrandom.php im Verzichnis /media zu parken und dann, wie im PHP-Manual beschrieben ist, <a href="http://de2.php.net/manual/de/function.setcookie.php" rel="nofollow noopener noreferrer">setcookie()</a> als viertes Argument <code class="language-php"><span class="token string double-quoted-string">"/media"</span></code> mitzugeben. Da es aber auch Deine Gliederung des Webs in z. B. /media und /php sehr hilfreich bei Wartungsarbeiten ist, würde ich Dir nach den Möglichkeiten Deines Providers <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" rel="nofollow noopener noreferrer">mod_rewrite</a> zu nutzen. Hierbei wird ein virtuelles Verzeichnis dem Browser in der index.xhtml benannt, in dem ein Bild sei, was dann von mod_rewrite auf /php/teaserrandom.php mapped. Dazu benötigst Du dann noch eine .htaccess-Datei im selben Verzeichnis der index.xhtml.</p> <p>index.xhtml:<br> <code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/teaser/cookies.jpg<span class="token punctuation">"</span></span> <span class="token attr-name">alt</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Zufallsbild<span class="token punctuation">"</span></span><span class="token punctuation">/></span></span></code></p> <p>.htaccess:</p> <pre><code class="block language-apache">RewriteEngine On RewriteRule   ^/teaser/cookies.jpg$  /php/teaserrandom.php [L] </code></pre> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404193#m1404193 AirMax 2009-11-07T15:19:30Z 2009-11-07T15:19:30Z Header-Informationen <blockquote> <p>Für solche Fragen zu Content-Length ist die <a href="http://tools.ietf.org/html/rfc2616#section-14.13" rel="nofollow noopener noreferrer">RFC 2616 Abs. 14.13</a> zuständig. Demnach ist es empfohlen, nicht ohne triftigen Grund auf diesen Header zu verzichten. Da jedoch Daten, die PHP ausgibt allermeist gestückelt werden (chunked transfer encoding), kann man darauf verzichten (vgl. <a href="http://tools.ietf.org/html/rfc2616#section-4.4" rel="nofollow noopener noreferrer">Abs. 4.4</a>).</p> </blockquote> <blockquote> <p>Auf die Angabe des Content-type-Header kann nur aus triftigen Gründen verzichtet werden. Eine begünstigende Einschränkung, wie Bei Content-Length gibt es jedoch nicht (vgl. <a href="http://tools.ietf.org/html/rfc2616#section-7.2.1" rel="nofollow noopener noreferrer">Abs. 7.2.1</a>).</p> </blockquote> <p>Ok. Dann weiß ich jetzt Bescheid und werde in solchen Fällen die Headers immer brav mitschicken.</p> <blockquote> <p>Das einfachste wäre teaserrandom.php im Verzichnis /media zu parken und dann, wie im PHP-Manual beschrieben ist, <a href="http://de2.php.net/manual/de/function.setcookie.php" rel="nofollow noopener noreferrer">setcookie()</a> als viertes Argument <code class="language-php"><span class="token string double-quoted-string">"/media"</span></code> mitzugeben. Da es aber auch Deine Gliederung des Webs in z. B. /media und /php sehr hilfreich bei Wartungsarbeiten ist, würde ich Dir nach den Möglichkeiten Deines Providers <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" rel="nofollow noopener noreferrer">mod_rewrite</a> zu nutzen. Hierbei wird ein virtuelles Verzeichnis dem Browser in der index.xhtml benannt, in dem ein Bild sei, was dann von mod_rewrite auf /php/teaserrandom.php mapped. Dazu benötigst Du dann noch eine .htaccess-Datei im selben Verzeichnis der index.xhtml.</p> </blockquote> <p>Gut, dann werde ich mich mal mit dem Thema 'mod_rewrite' genauer beschäftigen. Mal sehen, ob ich auf die Reihe bekomme. Wenn's nicht klappen sollte, habe ich ja immer noch die include()-Variante als Alternative.</p> <p>Also Eddi, vielen Dank für Deine Hilfe und bis bald</p> <p>AirMax</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404195#m1404195 Edgar Ehritt 2009-11-02T15:31:54Z 2009-11-02T15:31:54Z Header-Informationen <p>Re:</p> <blockquote> <p>...Dann hatte ich mal den include an den Anfang gesetzt, bevor html ausgegeben wird. Und siehe da, es hat funktioniert. Aber das nützte mir nicht viel, da ich ja, layoutbedingt, den include zu einem späteren Zeitpunkt brauche. Zunächst dachte ich, dass ich was an der Logik HTML und PHP ändern müsste. Aber ich finde, dass sie so ok ist.</p> </blockquote> <p>Daraus schließe ich, dass Du noch ein paar Schwierigkeiten bei der Organisierung Deines Programms hast.</p> <blockquote> <p>[...Ausgabepufferung...]</p> <p>Wenn jemand noch eine andere Idee ... bitte melden!</p> </blockquote> <p>Trenne Dein Programm in die einzelnen Bestandteile auf. Was ich damit meine, und welche Möglichkeiten Du dadurch in der Hand hast, lässt sich am besten praktisch erklären. Daher bitte ich Dich, den Quellcode index.php und teaserrandem.php auf Deinem Web zugänglich zu machen!</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404196#m1404196 AirMax 2009-11-02T15:42:26Z 2009-11-02T15:42:26Z Header-Informationen <p>Hi Eddi</p> <blockquote> <p>Daher bitte ich Dich, den Quellcode index.php und teaserrandem.php auf Deinem Web zugänglich zu machen!</p> </blockquote> <p>Jupp. Mach ich heute im Laufe des Abends.<br> bis denne ...</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404197#m1404197 AirMax 2009-11-02T18:38:16Z 2009-11-02T18:38:16Z Header-Informationen <blockquote> <blockquote> <p>Daher bitte ich Dich, den Quellcode index.php und teaserrandem.php auf Deinem Web zugänglich zu machen!</p> </blockquote> <p>Jupp. Mach ich heute im Laufe des Abends.<br> bis denne ...</p> </blockquote> <p>So, hier geht's zur <a href="http://www.thomaspetke.info/test/index.php" rel="nofollow noopener noreferrer">index.php</a>.<br> Und hier ist die 'teaserrandom.php':</p> <pre><code class="block language-php"> <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// Aktuelles Verzeichnis oeffnen und mit $handler zur Verfuegung stellen </span> <span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Schleife fuer das Einlesen des Ordnerinhaltes in $dateien </span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token variable">$dateien</span> <span class="token operator">=</span> <span class="token function">readdir</span><span class="token punctuation">(</span><span class="token variable">$handler</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">!==</span> <span class="token constant boolean">false</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Dateien als array kontinuierlich in $array schreiben </span> <span class="token variable">$array</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$dateien</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Aktuelles Verzeichnis schliessen </span> <span class="token function">closedir</span><span class="token punctuation">(</span><span class="token variable">$handler</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//...................... </span> <span class="token comment">// $array mit der Funktion 'callback' filtrieren und mit $auswahl zur Verfuegung stellen </span> <span class="token variable">$auswahl</span> <span class="token operator">=</span> <span class="token function">array_filter</span><span class="token punctuation">(</span><span class="token variable">$array</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'callback'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Beginn der Funktion 'callback' </span> <span class="token keyword">function</span> <span class="token function-definition function">callback</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Diverse Variablen fuer die Funktion </span> <span class="token variable">$stringinfo</span> <span class="token operator">=</span> <span class="token function">pathinfo</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Bildinformationen des zu ueberpruefenden Strings $foo laden </span> <span class="token variable">$imageinfo</span> <span class="token operator">=</span> <span class="token function">getimagesize</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Zugelassene Extensions als array in $validextensions zur Verfuegung stellen </span> <span class="token variable">$validextensions</span> <span class="token operator">=</span> <span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'jpg'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'jpeg'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'jpe'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Start der Bedingungen fuer korrekte Dateiendung, Ausschluss von 'portrait.jpg' und korrenten MIME-Typ </span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token comment">// Bedingung fuer korrekte Dateiendung </span> <span class="token punctuation">(</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token function">strtolower</span><span class="token punctuation">(</span><span class="token variable">$stringinfo</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'extension'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token variable">$validextensions</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">// UND </span> <span class="token operator">&&</span> <span class="token comment">// Bedingung fuer Ausschluss von 'portrait.jpg' </span> <span class="token punctuation">(</span><span class="token variable">$foo</span> <span class="token operator">!=</span> <span class="token function">strtolower</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'portrait.jpg'</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment">// UND </span> <span class="token operator">&&</span> <span class="token comment">// Bedingung fuer korrekten MIME-Typ 'image/jpeg' </span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token variable">$imageinfo</span><span class="token punctuation">[</span>mime<span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string single-quoted-string">'image/jpeg'</span><span class="token punctuation">)</span> <span class="token comment">// Ende der Bedingungen </span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">true</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token constant boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Ende der Funktion 'callback' </span> <span class="token punctuation">}</span> <span class="token comment">//...................... </span> <span class="token comment">//1 Schluessel innerhalb des Arrays $auswahl zufaellig waehlen und in $zufall speichern </span> <span class="token variable">$zufall</span> <span class="token operator">=</span> <span class="token function">array_rand</span><span class="token punctuation">(</span><span class="token variable">$auswahl</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Start der Bedingung </span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token comment">// Falls kein Cookie 'teaser' vorhanden </span> <span class="token operator">!</span><span class="token variable">$_COOKIE</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">]</span> <span class="token comment">// Ende der Bedingung </span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Cookie 'teaser' setzen und Wert $zufall zuweisen </span> <span class="token comment">// Der Cookie ist fuer eine Sitzung gueltig und wird nach dem Schliessen des Browsers geloescht </span> <span class="token function">setcookie</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">,</span> <span class="token variable">$zufall</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$auswahl</span><span class="token punctuation">[</span><span class="token variable">$zufall</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">echo</span> <span class="token variable">$auswahl</span><span class="token punctuation">[</span><span class="token variable">$_COOKIE</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Ich hoffe, die ganzen Kommentare stören nicht zu sehr...</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404198#m1404198 Edgar Ehritt 2009-11-02T19:17:40Z 2009-11-02T19:17:40Z Header-Informationen <p>Re:</p> <blockquote> <p>So, hier geht's zur <a href="http://www.thomaspetke.info/test/index.php" rel="nofollow noopener noreferrer">index.php</a>.</p> </blockquote> <p>Da hätte ich gerne den Quelltext gesehen. Kannst Du eine Kopie als index.php.txt hochladen? Danke.</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404199#m1404199 AirMax 2009-11-02T21:44:45Z 2009-11-02T21:44:45Z Header-Informationen <blockquote> <p>Kannst Du eine Kopie als index.php.txt hochladen? Danke.</p> </blockquote> <p>Klar, aber noch habe ich nichts an der 'index.html' gemacht. Habe sie nur in 'index.php' umbenannt. <a href="http://www.thomaspetke.info/test/index.php.txt" rel="nofollow noopener noreferrer">Hier</a> geht's lang.</p> <p>Gruß</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404200#m1404200 Edgar Ehritt 2009-11-02T22:26:23Z 2009-11-02T22:26:23Z Header-Informationen <p>Moment, schriebst Du nicht etwas davon, dass in der index.php teaserrandom.php per include() einbezogen wird? Mich interessiert ja nicht, der HTML-Quelltext sondern der PHP-Quellcode.</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404201#m1404201 AirMax 2009-11-02T22:53:06Z 2009-11-02T22:53:06Z Header-Informationen <blockquote> <p>Moment, schriebst Du nicht etwas davon, dass in der index.php teaserrandom.php per include() einbezogen wird? Mich interessiert ja nicht, der HTML-Quelltext sondern der PHP-Quellcode.</p> </blockquote> <p>Hab nochmals die <a href="http://www.thomaspetke.info/test/index.php.txt" rel="nofollow noopener noreferrer">index.php.txt</a> hochgeladen.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404202#m1404202 Edgar Ehritt 2009-11-02T23:38:06Z 2009-11-02T23:38:06Z Header-Informationen <p>Re:</p> <p>Ach so einfach ist der Fall gelegen. Gut, dann erspare ich Dir die graue Theorie:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// Content-Type als "application/xhtml+xml" deklarieren </span> <span class="token comment"># header('Content-Type: application/xhtml+xml'); </span> <span class="token comment"># mit dem Content-Type-Header kann auch gleichfalls die Zeichenkodierung festgelegt werden. Zum einen kann man das mit header() machen... </span> <span class="token function">header</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'Content-Type: application/xhtml+xml; charset=utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment"># ... zum anderen kann man das auch einfach durch Konfiguration machen: </span> <span class="token function">ini_set</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'default_mimetype'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'application/xhtml+xml'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">ini_set</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'default_charset'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'utf-8'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment"># Dann wird teaserrandom.php eingebunden, womit sich das Problem -Header vor Textausgabe- erledigt </span> <span class="token variable">$url</span><span class="token operator">=</span><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaserrandom.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> </code></pre> <pre><code class="block language-html"><span class="token prolog"><?xml version="1.0" encoding="utf-8"?></span> <span class="token doctype"><span class="token punctuation"><!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span> <span class="token name">PUBLIC</span> <span class="token string">"-//W3C//DTD XHTML 1.0 Strict//EN"</span> <span class="token string">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>html</span> <span class="token attr-name">xmlns</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>http://www.w3.org/1999/xhtml<span class="token punctuation">"</span></span> <span class="token attr-name"><span class="token namespace">xml:</span>lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>de<span class="token punctuation">"</span></span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>de<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span>thomaspetke<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">http-equiv</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>Content-Type<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>application/xhtml+xml; charset=utf-8<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>language<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>de<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>robots<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>index, follow<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>meta</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>revisit-after<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>1 month<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>shortcut icon<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>image/x-icon<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/favicon.ico<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/css<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>css/general.css<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>object</span> <span class="token attr-name">data</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/logo.svg<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>image/svg+xml<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>objectsvg<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>src<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/logo.svg<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> thomaspetke <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>object</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>h1</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>div</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>center<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>ul</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>navigation<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dark<span class="token punctuation">"</span></span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>fr<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>htm/portrait.xhtml<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Portrait<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dark<span class="token punctuation">"</span></span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>la<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>htm/portfolio.xhtml<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Portfolio<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dark<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>htm/kontakt.xhtml<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Kontakt<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dark<span class="token punctuation">"</span></span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>htm/links.xhtml<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Links<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>li</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>dark<span class="token punctuation">"</span></span> <span class="token attr-name">lang</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>en<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>htm/sitemap.xhtml<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>Sitemap<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>li</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>ul</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>object</span> <span class="token attr-name">data</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/ ~~~`<?php echo $url;?>`{:.language-php}~~~html <span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>image/jpeg<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>objectimg<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>src<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/ ~~~`<?php echo $url;?>`{:.language-php}~~~html <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> teaser <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>object</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>p</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>light<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>footer<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token entity" title="&#169;">&#169;</span> 2009<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>p</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>object</span> <span class="token attr-name">data</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/footerbg.svg<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>image/svg+xml<span class="token punctuation">"</span></span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>footerbg<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>param</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>src<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>media/footerbg.svg<span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>object</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>div</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>body</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>html</span><span class="token punctuation">></span></span> </code></pre> <p>Als nächstes wir teaserrandom.php etwas modifiziert:</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$handler</span> <span class="token operator">=</span> <span class="token function">opendir</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token variable">$dateien</span> <span class="token operator">=</span> <span class="token function">readdir</span><span class="token punctuation">(</span><span class="token variable">$handler</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">!==</span> <span class="token constant boolean">false</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token variable">$dateien</span><span class="token punctuation">,</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.'</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'..'</span><span class="token punctuation">)</span><span class="token punctuation">{</span> <span class="token variable">$array</span><span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token variable">$dateien</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token function">closedir</span><span class="token punctuation">(</span><span class="token variable">$handler</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//...................... </span> <span class="token variable">$auswahl</span> <span class="token operator">=</span> <span class="token function">array_filter</span><span class="token punctuation">(</span><span class="token variable">$array</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'callback'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">function</span> <span class="token function-definition function">callback</span><span class="token punctuation">(</span><span class="token variable">$foo</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//...................... </span> <span class="token punctuation">}</span> <span class="token comment">//...................... </span> <span class="token variable">$zufall</span> <span class="token operator">=</span> <span class="token function">array_rand</span><span class="token punctuation">(</span><span class="token variable">$auswahl</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token operator">!</span><span class="token variable">$_COOKIE</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token function">setcookie</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">,</span> <span class="token variable">$zufall</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span><span class="token punctuation">(</span><span class="token variable">$auswahl</span><span class="token punctuation">[</span><span class="token variable">$zufall</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">return</span><span class="token punctuation">(</span><span class="token variable">$auswahl</span><span class="token punctuation">[</span><span class="token variable">$_COOKIE</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'teaser'</span><span class="token punctuation">]</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404203#m1404203 AirMax 2009-11-03T08:11:59Z 2009-11-03T08:11:59Z Header-Informationen <p>Hallo Eddi</p> <p>Schon mal vielen Dank für Deine Hilfe!</p> <blockquote> <p>Ach so einfach ist der Fall gelegen.</p> </blockquote> <p>Ja, ja, nichts weltbewegendes. Zum lernen reichts vollkommen aus!</p> <blockquote> <h3></h3></blockquote> <p>Ich wusste gar nicht, dass man in PHP auch mit '#' kommentieren kann. Mal was anderes.</p> <blockquote> <p>Dann wird teaserrandom.php eingebunden, womit sich das Problem -Header vor Textausgabe- erledigt<br> <code class="language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token variable">$url</span><span class="token operator">=</span><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'teaserrandom.php'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span></code></p> </blockquote> <p><code class="language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">echo</span> <span class="token variable">$url</span><span class="token punctuation">;</span> <span class="token delimiter important">?></span></span></code><br> Klingt absolut einleuchtend.</p> <blockquote> <p>Als nächstes wir teaserrandom.php etwas modifiziert:</p> <pre><code class="block language-php"></code></pre> </blockquote> <blockquote> <p>while (($dateien = readdir($handler)) !== false) {<br>     if(!in_array($dateien,array('.','..'){<br>         $array[] = $dateien;<br>     }<br> }</p> </blockquote> <pre><code class="block">Sehe ich das richtig? Du willst also schon beim Einlesen der Dateinen auf die zulässige Extension überprüfen? Klingt eigentlich logisch. Mann muss ja nicht alles einsammeln, um die Hälfte später wieder von Bord zu werfen. Ich frage mich nur, ob '$dateien' an dieser Stelle schon ein array ist. > `$auswahl = array_filter($array, 'callback');`{:.language-php} > `function callback($foo) {`{:.language-php} Hier hat sich glaub' nichts geändert... > ~~~php if(!$_COOKIE['teaser']) { >         setcookie('teaser', $zufall, 0); >         return($auswahl[$zufall]); > } > else { >         return($auswahl[$_COOKIE['teaser']]); > } </code></pre> <p>Macht es einen Unterschied, ob man 'echo' oder 'return' nimmt? Also 'echo' für die tatsächliche Ausgabe und 'return' für die "Weiterverwendung" der Ausgabe.</p> <blockquote> <p>Gruß aus Berlin!</p> </blockquote> <p>Gruß NACH Berlin!</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404204#m1404204 Edgar Ehritt 2009-11-03T13:57:09Z 2009-11-03T13:57:09Z Header-Informationen <p>Re:</p> <blockquote> <p>Sehe ich das richtig? Du willst also schon beim Einlesen der Dateinen auf die zulässige Extension überprüfen? Klingt eigentlich logisch. Mann muss ja nicht alles einsammeln, um die Hälfte später wieder von Bord zu werfen. Ich frage mich nur, ob '$dateien' an dieser Stelle schon ein array ist.</p> </blockquote> <p>Erstmal wurden nur die Verzeichniseinträge für das eigene und übergeordnete Verzeichnis ausgeschlossen. Ansonsten macht es Sinn, egal bei welchen Aufgabenstellungen immer nur die Daten zu sammeln, die tatsächlich für weitere Verarbeitungsschritte benötigt werden. So könnte man die Erweiterung bereits beim Einlesen mittels <code class="language-php"><span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">in_array</span><span class="token punctuation">(</span><span class="token function">substr</span><span class="token punctuation">(</span><span class="token variable">$dateien</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'.jpg'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'jpeg'</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'.jpe'</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span></code> prüfen. Und wo wir gerade beim Verbessern sind, halte den Einsatz von getimagesize() für übertrieben. Der Webserver selbst bestimmt den Mediatyp einer Datei an seiner Erweiterung. Somit ist es auch für PHP ausreichend zu prüfen, ob die Dateierweiterung auf .jpg, jpeg oder .jpe endete, um den Typ als image/jpeg zu bestimmen.</p> <blockquote> <blockquote> <pre><code class="block language-php"></code></pre> </blockquote> </blockquote> <p>if(!$_COOKIE['teaser']) {</p> <blockquote> <blockquote> <p>setcookie('teaser', $zufall, 0);<br>         return($auswahl[$zufall]);<br> }<br> else {<br>         return($auswahl[$_COOKIE['teaser']]);<br> }</p> </blockquote> </blockquote> <pre><code class="block"> > Macht es einen Unterschied, ob man 'echo' oder 'return' nimmt? Also 'echo' für die tatsächliche Ausgabe und 'return' für die "Weiterverwendung" der Ausgabe. Das war der kleine Trick, denn ich Dir [oben](https://forum.selfhtml.org/?t=192190&m=1283021) schon mal vermitteln wollte. Während `echo`{:.language-php} sich immer absolut gleich verhält, bewirkt `return`{:.language-php} die Veränderung des Rückgabewertes von `include`{:.language-php}, der sonst bei true oder false liegt. Darüber hinaus beendet return sofort die Abarbeitung der einbezogenen Datein (im Beispiel teaserrandom.php). Sieh Dir dazu die Beschreibung von [include()](http://de2.php.net/manual/de/function.include.php) im Manual an! Gruß aus Berlin! eddi </code></pre> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404205#m1404205 AirMax 2009-11-03T14:17:30Z 2009-11-03T14:17:30Z Header-Informationen <blockquote> <p>Erstmal wurden nur die Verzeichniseinträge für das eigene und übergeordnete Verzeichnis ausgeschlossen.</p> </blockquote> <p>Ach so, dann waren die Punkte als solches zu verstehen. Ich dachte, Du meintest sie als Platzhalter.</p> <blockquote> <p>Ansonsten macht es Sinn, egal bei welchen Aufgabenstellungen immer nur die Daten zu sammeln, die tatsächlich für weitere Verarbeitungsschritte benötigt werden.</p> </blockquote> <p>Eben, das finde ich einleuchtend.</p> <blockquote> <p>Und wo wir gerade beim Verbessern sind, halte den Einsatz von getimagesize() für übertrieben. Der Webserver selbst bestimmt den Mediatyp einer Datei an seiner Erweiterung. Somit ist es auch für PHP ausreichend zu prüfen, ob die Dateierweiterung auf .jpg, jpeg oder .jpe endete, um den Typ als image/jpeg zu bestimmen.</p> </blockquote> <p>Suit hat nur angemerkt, dass es sein könnte, dass eine jpg-Datei nicht unbedingt eine jpg-Datei ist, nur weils sie die Extension hat...</p> <blockquote> <p>Das war der kleine Trick, denn ich Dir <a href="https://forum.selfhtml.org/?t=192190&m=1283021" rel="noopener noreferrer">oben</a> schon mal vermitteln wollte.</p> </blockquote> <p>Ja, ich wusste, dass es noch irgendetwas mit Deinem Tipp auf sich hatte. Ich hatte immer nur <code class="language-php"><span class="token keyword">echo</span></code> vor <code class="language-php"><span class="token keyword">include</span><span class="token punctuation">(</span><span class="token punctuation">)</span></code> gesehen und habe mich gefragt, ob das Sinn macht?! Das <code class="language-php"><span class="token keyword">return</span></code> in der 'teaserrandom.php' hatte ich vollkommen übersehen.<br> Also, ich schlage vor, ich probier die ganze Sache mal aus. Falls es nicht klappt, melde ich mich wieder.</p> <p>Danke & Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404206#m1404206 Edgar Ehritt 2009-11-03T15:02:00Z 2009-11-03T15:02:00Z Header-Informationen <p>Re:</p> <blockquote> <p>Suit hat nur angemerkt, dass es sein könnte, dass eine jpg-Datei nicht unbedingt eine jpg-Datei ist, nur weils sie die Extension hat...</p> </blockquote> <p>Womit Suit formal recht hat. Alle gängigen Webserver nutzen aber ausschließlich die Dateinamenserweiterungen, um den Mediatyp zu bestimmen. Das sollte Suit, wenn er solche Haarspaltereien betreibt, aber wissen.</p> <blockquote> <p>Also, ich schlage vor, ich probier die ganze Sache mal aus. Falls es nicht klappt, melde ich mich wieder.</p> </blockquote> <p>HF</p> <p>Gruß aus Berlin!<br> eddi</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404207#m1404207 AirMax 2009-11-03T15:14:17Z 2009-11-03T15:14:17Z Header-Informationen <blockquote> <p>Womit Suit formal recht hat. Alle gängigen Webserver nutzen aber ausschließlich die Dateinamenserweiterungen, um den Mediatyp zu bestimmen. Das sollte Suit, wenn er solche Haarspaltereien betreibt, aber wissen.</p> </blockquote> <p>Ich hab' nichts gesagt ... :D</p> <blockquote> <p>HF</p> </blockquote> <p>klar doch ...</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404210#m1404210 suit suit@rebell.at http://rebell.at/ 2009-10-30T15:46:04Z 2009-10-30T15:46:04Z ordentliches Einrücken von Code <blockquote> <p>Ich weiss, vorher hatte ich die auch benutzt. Aber die Zeile in der Bedingung wurde dann ziemlich lang und unübersichtlich. Ausserden vergass ich zig mal eine der 5. Klammern am Ende, um die Bedingung zu schliessen...</p> </blockquote> <p>Du kannst auch mehrzeilig schreiben und einrücken bzw. Klammern verwenden um das Zeug lesbarer machen.</p> <pre><code class="block language-php"><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token comment">// Bedingung auf xxx und yyy </span> <span class="token punctuation">(</span> <span class="token variable">$bar</span> <span class="token operator">===</span> <span class="token class-name">true</span> <span class="token operator">||</span> <span class="token comment">// hier passiert das ODER </span> <span class="token variable">$baz</span> <span class="token operator">!=</span> <span class="token number">0</span> <span class="token comment">// dieses hier </span> <span class="token punctuation">)</span> <span class="token operator">&&</span> <span class="token punctuation">(</span> <span class="token comment">// UND folgendes </span> <span class="token variable">$qux</span> <span class="token operator">===</span> <span class="token variable">$foo</span> <span class="token comment">// ja das hier </span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// do something </span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> </code></pre> <p>Kommentare und ein ordentlicher Einrückungsstil sind das A und O (oder besser Α und Ω) sind essentiell, um Programmcode oder Markup verständlich und lesbar zu halten.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404212#m1404212 suit suit@rebell.at http://rebell.at/ 2009-10-30T15:51:24Z 2009-10-30T15:51:24Z Regulärer Ausdruck <blockquote> <p>Ich möchte den Einträgen im nun erhaltenen "jpeg/jpg/jpe*image/jpeg-Bilderauswahl"-Array neue Schlüssel zuweisen (0 bis X) und dann random(en).</p> </blockquote> <p>Warum einen neuen Schlüssel zuweisen, welchen Vorteil versprichst du dir daraus?</p> <p>Durchmischen machst du jedenfalls mit shuffle()</p> <blockquote> <p>Den Wert speichere ich dann von diesem Verzeichnis aus in einem Cookie.</p> </blockquote> <p>Welche Wert?</p> <blockquote> <p>Ja, dran feilen kann ich ja immer noch. Am besten noch vergolden :)</p> </blockquote> <p>Ich würde es an deiner Stelle gleich tun - sonst weißt du in 3 Monaten nicht mehr, was du dir dabei gedacht hast[sic!] :)</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404213#m1404213 AirMax 2009-10-30T16:35:09Z 2009-10-30T16:35:09Z Regulärer Ausdruck <blockquote> <p>Warum einen neuen Schlüssel zuweisen, welchen Vorteil versprichst du dir daraus?</p> </blockquote> <p>Wollte:<br> 1. count($array);<br> 2. Schlüssel vergeben von [0] bis [X]<br> (Weil nach meiner Auswahl sind die Schlüssel ja durcheinander und nicht "chronologisch")<br> 3. rand(0,count($array);-1);<br> 4. Zahl speichern</p> <blockquote> <p>Den Wert speichere ich dann von diesem Verzeichnis aus in einem Cookie.<br> Welche Wert?</p> </blockquote> <p>den Wert von "rand(0,count($array);-1);"</p> <blockquote> <p>Ich würde es an deiner Stelle gleich tun - sonst weißt du in 3 Monaten nicht mehr, was du dir dabei gedacht hast[sic!] :)</p> </blockquote> <p>Da magst Du recht habe. Also gut.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404214#m1404214 AirMax 2009-10-30T17:16:47Z 2009-10-30T17:16:47Z Regulärer Ausdruck <p>Wieso einfach, wenn's auch kompliziert geht:</p> <p>array_rand()</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404215#m1404215 suit suit@rebell.at http://rebell.at/ 2009-10-30T19:54:03Z 2009-10-30T19:54:03Z zufälligen Eintrag aus Array wählen <blockquote> <p>Wieso einfach, wenn's auch kompliziert geht:</p> <p>array_rand()</p> </blockquote> <p>Darum habe ich gefragt und ursprünglich shuffle() vorgeschlagen :) wenn du aber ohnehin das array auf einen einzelnen Wert reduzieren willst und dich der Key dann nicht mehr interessiert, ist array_rand() die eindeutig beste Wahl :)</p> <p>Darum ist es wichtig, ein Problem auf Teilprobleme herunterzubrechen und dann anhand der verfügbaren Funktionen die entstandenen Probleme zu lösen.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404218#m1404218 suit suit@rebell.at http://rebell.at/ 2009-10-29T11:22:10Z 2009-10-29T11:22:10Z Warum auch ein völlig anderes Thema ein Doppelposting sein kann. <blockquote> <p>Ich finde, es ist kein Doppelposting. Mir geht's hierbei um die "Sache" und nicht um ein "Projekt". Das sind in meinen Augen 2 unterschiedliche Paar Schuhe. Wenn Du es anders siehst: "Entschuldigung" für's Doppelposting.</p> </blockquote> <p>Ein Doppelposting ist nicht unbedingt ein Duplikat eines Themas - auch ein Folgeproblem zählt dazu. Du teilst die Aufmerksamkeit und unterschlägst wichtige Informationen.</p> <p>Damit erschwerst du Helfenden, dir zu helfen und machst es dir selbst unnötig schwer, da du ggf. Beschreibungen nachreichen musst, die im vorhergehenden Thread schon gegeben waren. Bzw. du gehst von Dingen aus, die für dich selbstverständlich sind, ein neu hinzukommender Poster aber nicht wissen kann.</p> <p>So wie in diesem Thread - hier ist es für mich (der deinen anderen Thread verfolgt hat) offensichtlich, dass du keinen String sondern ein Array hast (das ist ein gewaltiger Unterschied - da <a href="http://php.net/manual/de/function.preg-match-all.php" rel="noopener noreferrer">preg_match_all</a> für $subject lt. Doku eindeutig einen String und kein Array erwartet) - Beat hast du damit aber auf eine falsche Fährte gelockt.</p> <p>Du kannst zu diesem Zweck problemlos innerhalb eines Threads das Thema (oder den Themenbereich) welchseln, wenn sich ein neues Folgeproblem auftut - so wie ich das jetzt tue.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404219#m1404219 AirMax 2009-10-29T12:14:58Z 2009-10-29T12:14:58Z Warum auch ein völlig anderes Thema ein Doppelposting sein kann. <p>Ich weiss, was Du damit sagen willst. Aber mir ist es eben wichtig die Sachen auch unabhängig vom Kontext zu verstehen. Ich will schliesslich nur das auf ein Projekt anwenden, was ich auch nachvollziehen kann und begreife. Deshalb dachte ich, es ist so besser.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404224#m1404224 suit suit@rebell.at http://rebell.at/ 2009-10-29T12:28:13Z 2009-10-29T12:28:13Z Warum auch ein völlig anderes Thema ein Doppelposting sein kann. <blockquote> <p>Ich weiss, was Du damit sagen willst. Aber mir ist es eben wichtig die Sachen auch unabhängig vom Kontext zu verstehen.</p> </blockquote> <p>Dann musst du aber auch sämtliche relevanten Informationen liefern und nicht _essentielle_ Informationen unterschlagen (wie erwähnt, ein String ist kein Array).</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404220#m1404220 ChrisB 2009-10-29T17:35:54Z 2009-10-29T17:35:54Z $tänze = array_count_values($hochzeiten); <p>Hi,</p> <blockquote> <p>Ich weiss, was Du damit sagen willst. Aber mir ist es eben wichtig die Sachen auch unabhängig vom Kontext zu verstehen.</p> </blockquote> <p>Dann solltest du dich aber vielleicht auch erst mal mit einem Thema etwas intensiver beschäftigen.<br> Im Moment scheinst du beinahe wöchentlich zur "nächsten Baustelle" zu springen, ohne die vorherige überhaupt fertiggestellt zu haben, d.h. das im dortigen Rahmen relevante auch wirklich durchdrungen und über einen von der konkreten Aufgabe vorgegebenen "Tellerrand" hinaus verstanden zu haben.</p> <p>MfG ChrisB</p> <div class="signature">-- <br> “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam] </div> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404222#m1404222 AirMax 2009-10-29T17:49:21Z 2009-10-29T17:49:21Z $tänze = array_count_values($hochzeiten); <blockquote> <p>Im Moment scheinst du beinahe wöchentlich zur "nächsten Baustelle" zu springen, ohne die vorherige überhaupt fertiggestellt zu haben, d.h. das im dortigen Rahmen relevante auch wirklich durchdrungen und über einen von der konkreten Aufgabe vorgegebenen "Tellerrand" hinaus verstanden zu haben.</p> <p>MfG ChrisB</p> </blockquote> <p>Hi ChrisB</p> <p>Du hast vollkommen recht! Ich stelle mir für gewöhnlich eine Aufgabe und suche nach einer Lösung. Wenn ich dann eine Lösung gefunden habe hinterfrage ich sie erneut und überlege mir, ob man es nicht auch vielleicht abders, einfacher oder eleganter lösen könnte. Doch leider stosse ich immer wieder an meine Grenzen und komme vor lauter Ideen gar nicht dazu mir das notwendige Wissen anzueignen. Denn oftmals sind die Dinge, die auf den ersten Blick sehr simpel aussehen diejenigen, die es in sich haben und die einen langen Entstehungsweg hinter sich haben. Ich glaube, man kann nicht Gestalter und Informatiker in einem sein. Dafür sind die Aufgabenfelder zu komplex. Viel wichtiger ist, dass man über ein gewisses Grundverständnis für das andere Territorium mitbringt. Und daran arbeite ich.</p> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404221#m1404221 AirMax 2009-10-29T17:51:22Z 2009-10-29T17:51:22Z $tänze = array_count_values($hochzeiten); <p>"$tänze = array_count_values($hochzeiten);"</p> <p>Das hast Du aber schön geschrieben ;)</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404223#m1404223 Der Martin self@kennst.net 2009-10-29T18:15:33Z 2009-10-29T18:15:33Z $tänze = array_count_values($hochzeiten); <p>Hallo,</p> <blockquote> <p>Ich stelle mir für gewöhnlich eine Aufgabe und suche nach einer Lösung.</p> </blockquote> <p>ja, das geht mir auch so. Ich gebe mich dann aber erst zufrieden, wenn ich die Lösung so weit verstanden habe, dass sie mir innerhalb der verfügbaren Randbedingungen so logisch erscheint, dass ich sie mir auch selbst hätte herleiten können; wenn ich die Lösung so kapiert habe, dass ich sie auch auf einen anderen Kontext anwenden kann.</p> <blockquote> <p>Wenn ich dann eine Lösung gefunden habe hinterfrage ich sie erneut und überlege mir, ob man es nicht auch vielleicht abders, einfacher oder eleganter lösen könnte.</p> </blockquote> <p>Das auch - diese Frage stelle ich mir aber erst, wenn ich aus der Detailtiefe des obigen Schritts wieder auftauche.</p> <blockquote> <p>Doch leider stosse ich immer wieder an meine Grenzen und komme vor lauter Ideen gar nicht dazu mir das notwendige Wissen anzueignen.</p> </blockquote> <p>Und das ist falsch und gefährlich, weil es dir nicht hilft!<br> Nimm einen Schreibblock, mach ein Brainstorming, notiere und skizziere deine Ideen, dass dir keine verlorengeht, wenn sich das Projekt länger hinzieht als erwartet.<br> Und dann spring nicht über die Einzelprobleme hinweg, sondern versuche sie zu bewältigen. Sicher, das heißt auch immer wieder: Lernen! Klar, man kann Teilbereiche für sich ausschließen (muss man bei der Fülle an Themen sogar), mit denen man sich nicht im Detail befassen möchte, sondern nur gerade soviel wie nötig.<br> Aber du machst den Eindruck eines Konditorlehrlings, der nur reihum an den Leckereien nascht, anstatt systematisch und konsequent zu lernen.</p> <blockquote> <p>Ich glaube, man kann nicht Gestalter und Informatiker in einem sein.</p> </blockquote> <p>Ich glaube, man kann. Das ist aber nicht der Regelfall. Meistens liegen die natürlichen Stärken doch deutlich im einen oder anderen Feld, und dann ist es hart, sich den anderen Bereich anzueignen, der einem vom Talent her nicht so liegt.</p> <blockquote> <p>Viel wichtiger ist, dass man über ein gewisses Grundverständnis für das andere Territorium mitbringt. Und daran arbeite ich.</p> </blockquote> <p>Wichtig ist IMHO, dass man ein Verständnis dafür entwickelt, wie die zahllosen Teildisziplinen zusammenhängen, auch wenn man sie nicht alle beherrscht.<br> Wenn man Autofahren will, muss man nicht genau wissen, wie Motor, Kupplung und Getriebe exakt konstruiert sind. Es hilft aber, wenn man ungefähr verstanden hat, wie diese Baugruppen miteinander funktionieren - dann wird einem auch die Handhabung logisch vorkommen, während es im anderen Fall ein stures Auswendiglernen von Bewegungsabläufen ist.</p> <p>Ciao,<br>  Martin</p> <div class="signature">-- <br> Man soll den Tag nicht vor dem Abend loben.<br> Und den Mann nicht vor dem Morgen.<br>   (alte Volksweisheit)<br> </div> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404226#m1404226 AirMax 2009-10-29T10:20:20Z 2009-10-29T10:20:20Z Regulärer Ausdruck <blockquote> <p>Konzentriere dich auf das, was dem Muster folgt.</p> </blockquote> <p>Besser?</p> <pre><code class="block language-php"> <span class="token keyword">foreach</span><span class="token punctuation">(</span><span class="token variable">$array</span> <span class="token keyword">as</span> <span class="token variable">$dateien</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">preg_match_all</span><span class="token punctuation">(</span><span class="token string double-quoted-string">"/(\.jpg$)/"</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token variable">$dateien</span><span class="token punctuation">,</span><span class="token variable">$ausschluss</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">var_dump</span><span class="token punctuation">(</span><span class="token variable">$ausschluss</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Gruss</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404227#m1404227 Der Martin self@kennst.net 2009-10-29T11:22:53Z 2009-10-29T11:22:53Z Regulärer Ausdruck <p>Hallo,</p> <blockquote> <blockquote> <p>Konzentriere dich auf das, was dem Muster folgt.<br> Besser?</p> </blockquote> <pre><code class="block language-php"></code></pre> </blockquote> <p>foreach($array as $dateien);</p> <blockquote> <p>preg_match_all("/(.jpg$)/"),$dateien,$ausschluss);<br> var_dump($ausschluss);</p> </blockquote> <pre><code class="block"> nö, überhaupt nicht. Immer noch derselbe Syntaxfehler. Liest du die Fehlermeldungen gar nicht, die der PHP-Parser um sich wirft? Oder lässt du sie gar nicht erst anzeigen? - Dann würde ein Script mit dieser Anweisung allerdings keinen Output erzeugen, sondern nur eine leere Seite. Und wenn der Syntaxfehler nicht wäre, würde ich immer noch die Sinnhaftigkeit der leeren foreach-Schleife anzweifeln. Ciao,  Martin -- Wieso heißen die Dinger eigentlich Anrufbeantworter? Eigentlich sind es doch nur Anrufanhörer. </code></pre> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404228#m1404228 AirMax 2009-10-29T12:21:07Z 2009-10-29T12:21:07Z Regulärer Ausdruck <blockquote> <p>Liest du die Fehlermeldungen gar nicht, die der PHP-Parser um sich wirft? Oder lässt du sie gar nicht erst anzeigen?</p> </blockquote> <p>Habe noch nie eine Fehlermeldung vom Parser bekommen. Offenbar sind die beim hoster ausgeschalten. Und lokal kann ich es nicht test, weil ich nicht weiss, wie man PHP (MacOSX) aktiviert.</p> https://forum.selfhtml.org/self/2009/oct/29/regulaerer-ausdruck/1404229#m1404229 pat 2009-10-29T20:40:56Z 2009-10-29T20:40:56Z Webserver MacOsX aktivieren <blockquote> <p>Und lokal kann ich es nicht test, weil ich nicht weiss, wie man PHP (MacOSX) aktiviert.</p> </blockquote> <p>Das ist einfach: um den in MacOsX enthaltenen Webserver zu aktivieren, gehe zu Systemeinstellungen/Sharing/Dienste und schalte "Personal Web Sharing" ein.</p> <p>Der Ordner für die Webseite des Computers (http://127.0.0.1/) ist (MacintoshHD)/Library/WebServer/Documents/, der Ordner für deine persönliche Seite (http://127.0.0.1/~UserName/) ist (DeinHomeVerzeichnis)/Web-Sites/.</p> <p>Der Apache hat in der Regel PHP schon installiert.</p> <p>Grüße, patrick</p>