Ankündigung

Einklappen
Keine Ankündigung bisher.

Gleiche Strings werden von IF nicht erkannt?! o_O

Einklappen

Neue Werbung 2019

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

  • Gleiche Strings werden von IF nicht erkannt?! o_O

    Ich will mir zu ner datei nen PHP-Editor schreiben was auch soweit schon gut klappt aber wenn ich eine Zeile verändere dann erkennt meine if-abfrage das nicht, obwohl sie eindeutig verändert ist wenn ich mir sie anzeigen lasse! Ich erhalte immer für jeden ausdruck "Verändert!" obwohl ich nur 1 oder keines verändert hab...

    (Ist noch etwas billig gecodet und hat auch schon n paar Sachen drin die später bei mir zum einsatz kommen sollen wenn ich speichere)
    PHP-Code:
    <?php

    if(isset($_POST['action']) && $_POST['action']=="save" && isset($_POST['file'])) {
        
    $i=0;
        
    $j=0;
        
    $handle fopen($_POST['file'], "r");
        while(!
    feof($handle)) {
            
    $line=fgets($handle4096);
            if(
    strstr($line'$lang[')) {
                
    $replace_phrase ".*\['(.*)'\] = \"(.*)\";";
                
    $param=preg_replace("/".$replace_phrase."/isUe""('\\1')"$line);
                
    $replace=preg_replace("/".$replace_phrase."/isUe""('\\2')"$line);

                
    // Hier ist mein Problem
                
    if($_POST['param'.$i] != $param) {
                    echo 
    "Ver&auml;ndert!
    "
    ;
                }

                
    $i++;
            }
        }
        
    fclose($handle);
        
    $j++;
        echo 
    "Die Datei \"".$_POST['file']."\" wurde erfolgreich bearbeitet!";
    }

    $file="lang_strings.php";
    $i=0;
    $langfields="";
    $handle fopen($file"r");
    while(!
    feof($handle)) {
        
    $line=fgets($handle4096);
        if(
    strstr($line'$lang[')) {
            
    $replace_phrase ".*\['(.*)'\] = \"(.*)\";";
            
    $param=preg_replace("/".$replace_phrase."/isUe""addslashes('\\1')"$line);
            
    $replace=preg_replace("/".$replace_phrase."/isUe""addslashes('\\2')"$line);
            eval(
    "\$langfields .= \"".$tpl->out("langfield")."\";");
            
    $i++;
        }
    }
    fclose($handle);

    echo 
    "<form action=\"edit.php\" method=\"post\">";
    echo 
    "<input type=\"hidden\" name=\"action\" value=\"save\">";
    echo 
    "<input type=\"hidden\" name=\"file\" value=\"$file\">";
    echo 
    $langfields;
    echo 
    "<input type=\"submit\">";
    echo 
    "</form>

    "
    ;

    ?>
    das Template "langfields" dazu:
    PHP-Code:
    <?php
    <input type="text" name="param$ivalue="$param"> <input type="text" name="replace$ivalue="$replace">

    ?>
    Die Datei "lang_strings.php" ist so aufgebaut:
    $lang['navi_home']="Home";

    Und hier mal ein Bild von dem Ergebniss:


    Ich hoffe ich konnt mein problem verständlich schildern!
    Danke für Hilfe


  • #2
    Was ist, wenn du beide Felder mit echo() bzw. print_r() mal ausgibst

    Kommentar


    • #3
      mach mal vor die verändert-Abfrage ein

      var_dump($_POST['param'.$i]);
      var_dump($param);

      Fällt da irgendas auf? Wenn nein, was steht denn da?
      mod = master of disaster

      Kommentar


      • #4
        Immer 2 Zeichen mehr oO

        PHP-Code:
        <?php

        string
        (15"navi_homeblabla" string(11"navi_home " Editiert!  // Verändert
        string(9"navi_news" string(11"navi_news " Editiert!
        string(10"navi_rules" string(12"navi_rules " Editiert!
        string(17"navi_teamtesttest" string(11"navi_team " Editiert//Verändert
        string(12"navi_members" string(14"navi_members " Editiert!
        string(10"navi_forum" string(12"navi_forum " Editiert!
        string(13"navi_register" string(15"navi_register " Editiert!
        string(12"error_nopage" string(14"error_nopage " Editiert!
        Die 
        Datei "lang_main.php" wurde erfolgreich bearbeitet!

        ?>

        Kommentar


        • #5
          string(9) "navi_news" string(11) "navi_news " Editiert!
          Zwei leerzeichen, oder ein Leerzeichen und ein Zeilenumbruch, zuviel nehme ich an, das sollte man im HTML-Quellcode sehen. Und dann sind die Strings in der Tat nicht gleich.

          Hängst Du an dem Whitespace, der am Ende hängt? Sonst könntest Du den mit rtrim() entfernen.
          http://php.net/rtrim
          mod = master of disaster

          Kommentar


          • #6
            Okay ich nutzte jetzt noch trim() ^^
            Danke für die rasche Hilfe

            Bei der Gelegenheit hät ich dann aber noch 2 Fragen:
            - Ist es sinnvoll Sprachdateien zu nutzen oder ist es sinnvoller alles aus ner DB zu nehmen?
            - Wenn ich jetzt eine Zeile verändern will wäre dann "fwrite($file, $content, $line)" richtig?

            Danke

            Kommentar


            • #7
              Zitat von Pain-maker
              - Wenn ich jetzt eine Zeile verändern will wäre dann "fwrite($file, $content, $line)" richtig?
              Hmm, was sagt denn das Manual zum Thema fwrite()?

              Kommentar

              Lädt...
              X