Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP REGEX und &

Einklappen

Neue Werbung 2019

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

  • PHP REGEX und &

    Hallo an Alle

    kann jemand mal kurz einen Blick auf die 2 nachstehenden Zeilen werfen irgendwie muss sich da ein Fehler eingeschlichen haben.

    PHP-Code:
    'regex' => "/\/inserate\//i"
    das funktioniert

    und jetzt ergänzt mit Parameter und Bundesland und einem &

    Der Übergabewert in den Link sieht so aus
    PHP-Code:
    /sorting-name=changed&region-name=sachsen 
    Ich habs mal so probiert aber funktioniert irgendwie nicht

    PHP-Code:
    'regex' => "/inserate\/\?sorting-name=changed\&\region-name\=\sachsen\/i"
    Danke an Alle und Gruß Andy

  • #2
    Diese Mini-Codeausschnitte helfen nicht bei der Problemsuche. Bitte ein vollständiges und nachvollziehbares Testbesispiel posten.

    Davon abgesehen sieht & nach HTML-Code aus und Regex eignet sich nicht wirklich zum Verarbeiten von HTML-Code. Dafür solltest du einen HTML-Parser verwenden wie z.B. DOMDocument.

    Kommentar


    • #3
      Hier mal der komplette Code Abschnitt

      PHP-Code:
      $META_TAG_DESCRIPTOR['60.1'] = array(
          
      'regex' => "/inserate\/\?sorting-name=changed\&\region-name\=\sachsen\/i",
          
      'title' => function ($sql) {
              return 
      'Domain.de – Test,Test,Test';
          },
          
      'description' => function ($sql) {
              return 
      'Domain.de – Test,Test,Test';
          },
          
      'keywords' => function ($sql) {
              return 
      'Domain.de – Test,Test,Test';
          },
          
      'h1' => function ($sql) {
              return 
      'Test';
          }
      ); 

      Der Link sieht so aus:

      PHP-Code:
      https://www.domain.de/inserate/?sorting-name=changed&region-name=sachsen 

      Kommentar


      • #4
        Was hat das & da im Regex verloren? "&" ist eine HTML-Entität. Aber von HTML-Code seh ich hier nichts.

        Übrigens ist das eine URL und kein Link. Ein Link ist ein HTML-Element.

        Kommentar


        • #5
          PHP-Code:
          <?php
          $myUrl
          =parse_url'https://www.domain.de/inserate/?sorting-name=changed&region-name=sachsen');
          var_dump ($myUrl['scheme']); // https
          var_dump ($myUrl['host']); // www.domain.de
          var_dump ($myUrl['path']); // /inserate/
          parse_str($myUrl['query'], $myParaArray);
          var_dump($myParaArray);
          /*
          array (size=2)
            'sorting-name' => string 'changed' (length=7)
            'region-name' => string 'sachsen' (length=7)
          */
          ?>

          Kommentar


          • #6
            Zitat von majas Beitrag anzeigen
            und jetzt ergänzt mit Parameter und Bundesland und einem &amp;
            In einer URL kommt kein &amp; vor!

            Kommentar


            • #7
              majas

              Also dein Codeauszug ist mal alles andere als "komplett" ...
              Es gibt nur ein Definitions Array und ein Beispiel für eine URI
              Nicht sehr aussagekräftig.

              Dein regulärer Ausdruck ist aber auf jeden Fall fehlerhaft.
              Da sind zu viele Escape-Sequenzen drinne.

              Die roten Backslashes sind alle zu viel
              /inserate\/\?sorting-name=changed\&amp;\region-name\=\sachsen\/i

              Dadurch machst du den Ausdruck einfach kaputt

              Und Dormilich hat recht, dass das "&amp;" da ncihts zu suchen hat. es reicht ein "&"

              Hier nochmal was zu rumspielen: https://regex101.com/

              Wenn es nur um einen Match geht, dann sollte folgender Ausdruck passen


              Code:
              /inserate\/\?sorting-name=changed&region-name=sachsen/i

              Kommentar


              • #8
                Sage doch einfach was du vor hast, ist vielleicht einfacher als wenn hier alle herum raten.

                Kommentar

                Lädt...
                X