Ankündigung

Einklappen
Keine Ankündigung bisher.

if endif und preg_replace/preg_match Optimierung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • if endif und preg_replace/preg_match Optimierung

    Hi, ich bin neu hier und bitte Euch, mich nicht gleich zur Schnecke zu machen.

    Kann dieser Code noch verbessert werden? evlt. mit einem Array, oder kann ich das ruhig so belassen:
    PHP-Code:
    $id=$_GET['id'];
    if (
    $id==20):$liga='NLB&filter=Embrach+Rainbows&selection=schedules';
    endif;
    if (
    $id==21):$liga='1Liga_Ost&filter=Embrach+Rainbows+B&selection=schedules';
    endif;
    if (
    $id==22):$liga='Juniors&filter=Embrach+Rainbows&selection=schedules';
    endif;
    if (
    $id==23):$liga='Slowpitch&filter=Embrach+Rainbows&selection=schedules';
    endif; 
    Und das hier? Keine Angst, ich hab die Zusicherung, die Tabellen zu verwenden.
    PHP-Code:
    preg_match('/(<div id="mainCont">.*?<\/div>)/sm'$content$tabelle);
    $urlbereinigt preg_replace('#href="#''href="http:\/www.spielplan.ch'$tabelle);
    $targetbereinigt preg_replace('#title=#''target="_blank" title='$urlbereinigt);
    $imgbereinigt preg_replace('#img src="#''img border="0" src="http:\/www.spielplan.ch'$targetbereinigt);
    $tabellengerahmt preg_replace('#cellspacing#','cellspacing="1" border ="1"'$imgbereinigt);
    $formatiert preg_replace('#h2#''h3'$tabellengerahmt);
    $tabellenbereinigt preg_replace('#<td> </td></tr>#''<td></td></tr>'$formatiert);
    $tabellenbereinigt2 preg_replace('#<td> </td><td>#''<td></td><td>'$tabellenbereinigt);
    $result preg_replace('#Embrach Rainbows#''[b]Embrach Rainbows[/b]'$tabellenbereinigt2);
    echo 
    $result[1]; 
    Zur Info, content wird mit CURL geholt, da allow_url_fopen = off ist!

  • #2
    Es ist üblich, mehrere Bedingungen auf eine Variable (in deinem Fall $id) per switch-case-Konstrukt umzusetzen.

    http://de3.php.net/switch

    Denn es ist einfach übersichtlicher. Eine Performance-Verbesserung bringt es aber wohl nicht.

    Ich rate dir aber, die Bereinigungen (2.Block) einmalig am tatsächlichen HTML-Quellcode vorzunehmen, anstatt dies jedes mal mit PHP aufs neue zu tun. Der Performance-Gewinn wäre hierbei gewaltig!

    Kommentar


    • #3
      Zitat von Zergling
      Es ist üblich, mehrere Bedingungen auf eine Variable (in deinem Fall $id) per switch-case-Konstrukt umzusetzen.

      http://de3.php.net/switch

      Denn es ist einfach übersichtlicher. Eine Performance-Verbesserung bringt es aber wohl nicht.

      Ich rate dir aber, die Bereinigungen (2.Block) einmalig am tatsächlichen HTML-Quellcode vorzunehmen, anstatt dies jedes mal mit PHP aufs neue zu tun. Der Performance-Gewinn wäre hierbei gewaltig!
      Vielen Dank für die rasche Antwort.
      Hab nun endlich die Case Switch sache kappiert und folgenden Code erstellt und den 1 Block damit ersetzt:
      PHP-Code:
      $id=$_GET['id'];
      switch (
      $id):
      case 
      20:
         
      $liga='NLB&filter=Embrach+Rainbows&selection=schedules';
         break;
      case 
      21:
         
      $liga='1Liga_Ost&filter=Embrach+Rainbows+B&selection=schedules';
         break;
      case 
      22:
         
      $liga='Juniors&filter=Embrach+Rainbows&selection=schedules';
         break;
      case 
      23:
         
      $liga='Slowpitch&filter=Embrach+Rainbows&selection=schedules';
         break;
      endswitch; 
      Das es viel einfacher ist den HTML Code zu ändern gebe ich ja zu, aber
      da ich kein Zugriff (sprich kein Webmaster davon bin) muss ich das über
      diese umständliche art und weise tun. Ich könnte zwar von dem
      Webmaster eine Datei generieren lassen, aber ich wollte ihn auch
      nicht zu stark belästigen und dachte mir, ich kann die Anpassungen
      ja auch selber machen.

      Nochmals vielen Dank!

      Kommentar


      • #4
        Den Umweg über die Speicherung in die Variable $id brauchst du eigentich nicht
        switch ($_GET['id']) .. oder besser
        if (isset($_GET['id'])) {
        switch ($_GET['id']) {
        ist besser.
        Gehen denn deine preg_replace()s nicht oder was ist deine Frage, wenn du an der Technik sowieso nichts ändern möchtest?

        Kommentar


        • #5
          PHP-Code:
          &filter=Embrach+Rainbows&selection=schedules 
          ist ja bei allen gleich, oder irre ich mich da? warum dann nicht in ner Variable speichern? ist doch besser für später..
          :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

          Kommentar


          • #6
            Vielen Dank dsmcg und Zergling,
            Das mit dem Filter stimmt, hab ich auch gleich mit einer Variable ersetzt.

            @Zergling
            Der Umweg kann ich mir wirklich sparen, schon wieder was gelernt.

            Die preg_replaces gehen tip top, ich bin bereit die Technik zu änderen.
            Es sind einfach gewisse vorgaben wie kein fopen möglich und keine
            Veränderung der Quellen HTML Datei.

            Vlt. weiss jemand eine bessere Technik als mit dem replacen?!? Bin offen für alles!

            Kommentar


            • #7
              Verstehe nicht, wieso du mit PHP Zugriff auf den Content hast, aber direkt auf den Content nicht?

              Ich kann dir nur raten von Anfang an richtigen Code zu schreiben, und nicht mit irgendwelchen replace-Funktionen alles zu verschlimmbessern. Vielleicht gehts jetzt, aber bei der nächsten Änderung stehste vielleicht dumm da...

              Kommentar


              • #8
                Zitat von Zergling
                Verstehe nicht, wieso du mit PHP Zugriff auf den Content hast, aber direkt auf den Content nicht?

                Ich kann dir nur raten von Anfang an richtigen Code zu schreiben, und nicht mit irgendwelchen replace-Funktionen alles zu verschlimmbessern. Vielleicht gehts jetzt, aber bei der nächsten Änderung stehste vielleicht dumm da...
                Das befürchte ich eben auch. Es ist so, ich wollte nicht mit iframes arbeiten. Die Quelle ist eine externe domain, schaut mal selber nach:
                Quelle: www.spielplan.ch
                Tabellen und Spielpläne in www.rainbows.ch/cms eingebunden.

                Kommentar


                • #9
                  Du liest von spielplan.ch den Spielplan aus und formatierst ihn für dich um? Frag doch den Webmaster dort, ob er dir Zugriff auf seine Datenquelle gibt oder dir pro Saison 1x den Spielplan als CSV oder sonstwie zur Verfügung stellt...

                  Kommentar


                  • #10
                    Zitat von Zergling
                    Du liest von spielplan.ch den Spielplan aus und formatierst ihn für dich um? Frag doch den Webmaster dort, ob er dir
                    Zugriff auf seine Datenquelle gibt oder dir pro Saison 1x den Spielplan
                    als CSV oder sonstwie zur Verfügung stellt...
                    Der Webmaster würde mir was zur Verfügung stellen, jedoch kein Zugriff auf die Datenbank.
                    Die Daten werden regelmässig mit den Resultaten und Berichten ergänzt, so dass es mit einem CSV zu umständlich wäre.

                    Ich werde vermutlich eh ein cronjob einrichten und die Daten in die DB einspeisen, so dass alles automatisch läuft.

                    Kommentar


                    • #11
                      Probier trotzdem eine direkte Lösung zu bekommen (soll er dir halt per cronjob nen CSV-File aus der Tabelle generieren, oder einen DB-Zugriff mit eingeschränkten Rechten), dieses Gefrickel ist unnötiger Balast.

                      Klar liegt es nicht in seinem Interesse, es ist dein Problem, aber was wenn er sein Design oder ähnliches ändert.

                      Kommentar

                      Lädt...
                      X