Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] trim scheint beim Rückgabewert von preg_match - matches nicht zu klappen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] trim scheint beim Rückgabewert von preg_match - matches nicht zu klappen

    Hallo

    Wieso klappt den trim() nicht bei folgendem Code Beispiel. Ich möchte ganz gerne noch eine zusätzlichen Sicherheitscheck haben bevor der Code geändert wird haben. Somit dachte ich, dass ich die string Länge haben möchte und mit der angegeben verglichen wird bevor eben die Datei geändert wird.

    Jedoch wenn ich im test.php eine neue Zeile machen, erhalte ich bei der Stringlänge auch ein mehr. Somit klappt ja trim() nicht. Oder mache ich was falsch? Besten Dank im voraus.

    PHP-Code:
    $file_content file_get_contents('test.php');

    $pattern '/\$Test \= \$this\-\>getService\(\'test\'\).+?design_id\'\)\;/s';
    $replacement '$New = $this->getService(\'new\')';

    $preg_match preg_match($pattern$file_content$matches);
    foreach(
    $matches as $index => $match) {
        echo 
    'match:'.$index.'<br>'.htmlspecialchars($match).'<br>';
        echo 
    strlen(trim($match));
    }
    //$content = preg_replace($pattern, $replacement, $file_content, $limit, $count); 

  • #2
    Jedoch wenn ich im test.php eine neue Zeile machen, erhalte ich bei der Stringlänge auch ein mehr.


    Oder mache ich was falsch?
    Die Fragen sind eher: Was möchtest du erreichen? Was erwartest du? Was beobachtest du tatsächlich?
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Ja war vielleicht nicht so verständlich ausgedrückt. Sorry.

      Was möchtest du erreichen?
      Ich möchte gerne die Stringlänge von $match erhalten jedoch ohne Leerschläge und neue Linien. Eben nur alle Zeichen.

      Was erwartest du?
      Was beobachtest du tatsächlich?
      Die funktion trim() sollte doch alle Whitespaces löschen, oder? Doch wie gesagt klappt das nicht.

      Edit: Nach erneutem Lesen des Php Manual, fand ich heraus das trim() nur den Beginn und das Ende des Strings trimmed.


      Nun versuchte ich es auf diesen Weg. Leider bekomme ich immernoch unterschiedliche Resultate.
      PHP-Code:
      strlen(str_replace(array(" ""\n""\r"),"",$match)); 

      Kommentar


      • #4
        So klappts nun:
        PHP-Code:
        strlen(str_replace(array(" ""\r\n""\r""\n""\t""\v""\0"), '',$match)); 

        Kommentar


        • #5
          Zitat von strub Beitrag anzeigen
          Nach erneutem Lesen des Php Manual
          +1
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar

          Lädt...
          X