Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Link Filtern

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Link Filtern

    Heyho,

    ich habe folgendes Problem, ich möchte den Link filtern und nach einem bestimmten Wort suchen, also ist man z.b. auf http://www.domain.de/service/seite.php soll das Bild Service angezeigt werden.
    Wenn also im Link service vorkommt, soll das Bild angezeigt werden, ansonsten das Standart Bild, bzw. wenn eines der anderen zutrifft, dann das entsprechende Bild.

    Was habe ich falsch gemacht?
    Hier mein Code:
    PHP-Code:
    <a href="./"><img src="
        
        <?php
        $logo 
    bloginfo('template_directory'); //Pfad zum Logo
        
    $url site_url(); //Aktuelle Seite
        
    $arr explode('/'':''http''https''www'$url);
        
        if (
    in_array("hebezeuge"$arr)) {
            echo 
    ''.$logo.'/img/logo-hebezeuge.jpg" />';
        }

        if (
    in_array("seilwinden"$arr)) {
            echo 
    ''.$logo.'/img/logo-seilwinden.jpg" />';
        } 
        
        if (
    in_array("service"$arr)) {
            echo 
    ''.$logo.'/img/logo-service.jpg" />';
        }else{
            echo 
    ''.$logo.'/img/logo-start.jpg" />';
            }
        
    ?>
        </a>

  • #2
    PHP-Code:
    $arr explode('/'':''http''https''www'$url); 
    Was soll das denn werden...
    => parse_url()

    Sind das statische Url's?

    Das hier
    PHP-Code:
    echo ''.$logo.'/img/logo-hebezeuge.jpg" />'
    ist blödsinn und prinzipiell das gleiche wie das:
    PHP-Code:
    echo $logo '/img/logo-hebezeuge.jpg" />'
    , sofern in $logo das drin steht, was benötigt wird...
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Hab es mit switch gelöst ^^

      PHP-Code:
      <a href="./"><img src="<?php
          $logo 
      bloginfo('template_directory');
          
      $url site_url();
          
          
      $url navigation_path();
          if(isset(
      $url[1])){
              switch(
      $url[1]){
                  case 
      "hebezeuge":
                      echo 
      $logo.'/img/logo-hebezeuge.jpg" />';
                      break;
                  case 
      "seilwinden":
                      echo 
      $logo.'/img/logo-seilwinden.jpg" />';
                      break;
                  case 
      "service":
                      echo 
      $logo.'/img/logo-service.jpg" />';
                      break;
                  default:
                      echo 
      $logo.'/img/logo-start.jpg" />';
              }    
          }else{
              echo 
      $logo.'/img/logo-start.jpg" />';
          }
          
      ?></a>

      Kommentar


      • #4
        nich' schön, aber selten...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Zitat von Lukbec Beitrag anzeigen
          Hab es mit switch gelöst ^^

          PHP-Code:
          <a href="./"><img src="<?php
              $logo 
          bloginfo('template_directory');
              
          $url site_url();
              
              
          $url navigation_path();
              if(isset(
          $url[1])){
                  switch(
          $url[1]){
                      case 
          "hebezeuge":
                          echo 
          $logo.'/img/logo-hebezeuge.jpg" />';
                          break;
                      case 
          "seilwinden":
                          echo 
          $logo.'/img/logo-seilwinden.jpg" />';
                          break;
                      case 
          "service":
                          echo 
          $logo.'/img/logo-service.jpg" />';
                          break;
                      default:
                          echo 
          $logo.'/img/logo-start.jpg" />';
                  }    
              }else{
                  echo 
          $logo.'/img/logo-start.jpg" />';
              }
              
          ?></a>
          hier überschreibst du $url ohne sie vorher zu nutzen:
          PHP-Code:
              $url site_url();
              
              
          $url navigation_path(); 

          Kommentar


          • #6
            PHP-Code:
            $url site_url(); 
            Kommt weg, C&P ^^

            Kommentar


            • #7
              Wenn ich dein Switch oben richtig sehen wäre die Lösung:
              PHP-Code:
              echo $logo.'/img/logo-'.$value.'.jpg" />'
              Doch sinnvoller, den unterschiedlichen Bestandteil des Links Einfach mit einem Regex oder über explode abgreifen und in $value speichern.

              Kommentar


              • #8
                1. Dazu benötigt man kein Regex!
                Wie in #2 beschrieben bekommt man über parse_url alles, was man braucht.
                Den Indes 'path' vom Rückgabewert kann man dann noch exploden, wenn man möchte, aber RegEx wäre hier imho mit Kanonen auf Spatzen.

                2. Generell gebe ich TessaKavanagh recht.
                Wenn wir allerdings anfangen, das ganze zu hinterfragen, dann verweise ich mal auf die Begriffe Kontextwechsel und EVA.
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Zitat von Lukbec
                  Hab es mit switch gelöst
                  Ja prima und bspw. den Pfad zu den Image-Templates mehrmals von Hand verdrahtet. Das wird lustig, wenn der sich mal ändert ...

                  Zitat von Lukbec Beitrag anzeigen
                  ... möchte den Link filtern und nach einem bestimmten Wort suchen, ...
                  Wenn also im Link service vorkommt, soll das Bild angezeigt werden, ansonsten das Standart Bild, bzw. wenn eines der anderen zutrifft, dann das entsprechende Bild.

                  Was habe ich falsch gemacht?
                  Zu wenig im PHP-Handbuch gelesen. Da werden Funktionen wie explode() erklärt. Und auch, wo man diverse Informationen zur "aktuell aufgerufenen Web-Seite" herbekommt. In deinem Fall wäre bspw. $_SERVER['REQUEST_URI'] ein guter Ansatzpunkt. Das enthält die "site-lokale" Adresse, geht mit einem '/' los und enthält direkt dahinter den Teil der URL, den du untersuchen möchtest.

                  PHP-Code:
                  function bloginfo($path_part) {
                      return 
                  '/' urlencode($path_part);
                      
                  // oder deine Implementierung
                  }

                  //...

                  $names = array (
                      
                  'start'// used as fallback
                      
                  'hebezeuge',
                      
                  'seilwinden',
                      
                  'service',
                  );

                  // get paths and urls

                  $logo_name substr(
                      
                  $_SERVER['REQUEST_URI'],
                      
                  1,
                      
                  strspn($_SERVER['REQUEST_URI'], 'abcdefghijklmnopqrstuvwxyz'1)
                  );

                  if (!
                  in_array($logo_name$namestrue)) {
                      
                  $logo_name $names[0]; // default value
                  }

                  // get path to logo image templates
                  $path bloginfo('template_directory');

                  // create html output
                  printf(
                      
                  '<a href="./"><img src="%s/img/logo-%s.jpg" /></a>',
                      
                  htmlspecialchars($pathENT_QUOTES), // $path should be url-safe
                      
                  htmlspecialchars(urlencode($logo_name), ENT_QUOTES)
                  );

                  // oder zur Kontrolle als Quelltext:
                  echo htmlspecialchars(sprintf(
                      
                  '<a href="./"><img src="%s/img/logo-%s.jpg" /></a>',
                      
                  htmlspecialchars($pathENT_QUOTES),
                      
                  htmlspecialchars(urlencode($logo_name), ENT_QUOTES)
                  )); 
                  Ich habe strspn() benutzt, weil manche Leute ein Problem mit Regulären Ausdrücken haben. Preg_match() wäre für mich einfacher gewesen, weniger Tipparbeit ('[a-z]+') und besser erweiterbar. Aber für dein konkretes Beispiel reicht erstmal auch strspn().
                  Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

                  Kommentar


                  • #10
                    Das Script läuft über Wordpress und der Image Pfad wird sich nicht ändern. Ich finde meine Lösung gut und dabei bleib ich auch klappt alles wie es klappen soll..

                    Zu wenig im PHP-Handbuch gelesen[...]
                    PHP-Kenntnisse:
                    Anfänger
                    Steht nicht umsonst bei mir..

                    Kommentar


                    • #11
                      PHP-Kenntnisse:
                      Anfänger
                      Steht nicht umsonst bei mir..
                      Ach ja, bitte entschuldige, dann muss man natürlich nicht nachlesen...
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        Doch doch, ich lese viel nach (sonst wäre ich nicht auf switch gekommen), aber da habe ich eine Lösung für mein Problem selbst gefunden und die wird dann wie Müll behandelt ^^ muss doch nicht sein oder?
                        Klar gibt es bessere Lösungen, aber meins geht und ich möchte ja auch nichts klauen..

                        Kommentar


                        • #13
                          Du willst also angelogen werden?
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Nein, aber ich finde soweit bin ich noch nicht.. (vom lernstand her)
                            Die Lösung von fireweasel ist recht schwer zuverstehen für mich und dazu auch noch länger als meine Lösung :P ,ist ja auch was positives an meiner Lösung

                            Kommentar


                            • #15
                              Die Lösung von fireweasel ist recht schwer zuverstehen für mich und dazu auch noch länger als meine Lösung :P ,ist ja auch was positives an meiner Lösung
                              Nimm es nicht zu "negativ-persönlich", sondern sehe es als konstruktive Kritik, die es im Grunde ja auch ist. Und - ganz ehrlich - sei doch froh wenn dir hier jemand wie fireweasel eine quasi Fertiglösung postet, das ist doch schon super was zum analysieren und daraus lernen, wie es bestimmt "besser" ist als deine Variante. Du siehst eigentlich alles ausser positiv nur positiv
                              The string "()()" is not palindrom but the String "())(" is.

                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X