Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wert aus CSS Datei für authomatisch zulässige Bannerbreite auslesen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Wert aus CSS Datei für authomatisch zulässige Bannerbreite auslesen

    Hallo alle.

    Und zwar habe ich ein kleines denkproblem. Ich muss eine CSS Datei öffnen weil da von dem #header Block einen ganz bestimmten Wert brauche,nämlich den der Breite.

    Grund dafür ist das ein Banner hochgeladen werden kann und die maximal zulässige Bannerbreite ist abhängig von der eingestellten Breite des headers.

    Wie ich eine Datei öffnen und lesen kann weis. Nun aber weis ich nicht so recht wie ich den Rest anstellen soll.

    Meine erste Denkweise war.

    Ich suche nach diesen Block hier in der Datei,weil der dafür zuständig ist.

    Code:
    #header
    {
    width: 900px; <!-- dieser Wert wird benötigt -->
    margin-left: 40px;
    border-left: 1px solid #000000;
    border-right: 1px solid #000000;
    border-top: 1px solid #000000;
    }
    Dann muss ich,denke ich in dem Block nach der Zeile wo die Breite drin steht suchen,aslo danach

    Code:
    width: 900px;
    dort dann dann den Zahlenwert raus trennen und in eine Variable schreiben die zum rechnen bzw. ermitteln der maximalen zulässigen Bannerbreite nötig ist.

    Wäre das von der Herangehensweise richtig? Wenn ja,wie kann ich nach diesen Codeblock suchen und den als String ausgeben? Dann wie kann ich die betreffende Zeile herausfinden? Diese zwei Sachen machen mir Schwierigkeiten,wenn ich die Zeile erst mal habe dann bekomme ich den Rest selber hin.

    Danke für eure Hilfe. mfg der litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de


  • #2
    Tipp:
    Mit JS kannst du CSS-Eigenschaften auslesen.

    Kommentar


    • #3
      Naja JS will ich da nicht nehmen und große Ahnung davon habe ich auch nicht.

      Mein Ansatz sieht wie folgt aus.

      PHP-Code:
      $datei "../styles/header.css";
            
      $handle fopen($datei,"r+");
            
      $file fread($handlefilesize($datei));
            
      $close fclose($handle);
            
      //echo $file;
            
      $pattern "#^(\#+)(header+)(\{+)([0-9a-z -\:\;]+)(\})$#";
            
      $such_string "#header{(.*?)}";
            if(
      preg_match($pattern$such_string))
            {
             echo 
      $such_string
            } 
      Ich henge grad daran was ich in die Variable $such_string rein schreiben muss. Habe schon das hier probiert (.*?) aber da gibt der nichts aus.
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      http://www.lit-web.de

      Kommentar


      • #4
        Weil Weihnachten ist :
        PHP-Code:
        if (preg_match('/#header[[:space:]]*{.*width[[:space:]]*:[[:space:]]*(\w+);/Uis'$css$matches)) {
            print 
        'Width is: ' $matches[1];
        } else {
            print 
        'Width not found!';

        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar


        • #5
          Das funzt. Aber bitte Manko kannst du mir da erklären was bei mir falsch war? Ich habe es zwar anders gecodet,aber grundsätzlich falsch?

          Was genau hat das [:space:] zu bedeuten und das w+?

          Danke,ich will nicht nur übernehmen sondern auch verstehen was da passiert.
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          http://www.lit-web.de

          Kommentar


          • #6
            Statt [:space:] kannst du auch \s schreiben, aber [:space:] passt auf mehr Zeichen (zu beachten ist, dass [:space:] nur innerhalb einer Zeichenklasse geschrieben werden kann, deshalb [[:space:]]).
            [:space:], \s und \w sind Zeichenklassen, wobei [:space:] für [\n\t\r\x0B], \s für [\n\t\r] und \w für [0-9a-zA-Z] steht.

            Bei deinem Ausdruck verstehe ich nicht, warum du überall den Quantifier + benutzt, außerdem hast du eine übermäßig starke Klammerung. Des Weiteren hast du den Parameter $matches nicht angegeben, weshalb du das Ergebnis nicht weiterverwerten kannst.
            Letztendlich hast den gesamten Block im Ergebnis (verteilt auf mehrere Indizes), nicht nur die Breite.
            Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

            Kommentar


            • #7
              Ok habe recht vielen Dank. Nun habsch wieder was dazu gelernt und werde es mir merken.

              Frohe Weihnachten dir und allen anderen.
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              http://www.lit-web.de

              Kommentar

              Lädt...
              X