file() \n\t Absätze/Tabs/etc. speichern?

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

  • file() \n\t Absätze/Tabs/etc. speichern?

    Hi,
    habe mir ne Funktion geschrieben bei der man ein Suchwort
    eingeben kann und die gefundene Zeile in der PHP Datei in der
    das Suchwort ist ausgetauscht wird allerdings hab ich allgemein das
    Problem dass mir file() die Absätze/Tabs rauslöscht die ich in meinem
    Editor geschrieben habe, ich würde gern dass er die Gliederungen
    der PHP Datei mitspeichert, also auch \t \n , etc...
    Habe mich zwar durchs Referenzhandbuch und durchs Forum
    durchgewüllt, aber hab dazu leider nix gefunden oder hab
    evtl. was übersehen, kann mir einer sagen ob es da ne
    Funktion/Methode gibt? Möchte nicht extra per Script die \t\n
    wieder eingliedern, sondern alles so belassen wie ich die PHP
    Datei in meinem Editor geschrieben hab.

    Mfg & thx darki

  • #2
    Schlecht gelesen Herr Specht
    Die Funktion file() ist identisch mit readfile(), außer dass die eingelesene Datei als Array zurückgegeben wird. Jedes Feld des Arrays korrespondiert mit einer Zeile der Datei. Der Zeilenumbruch bleibt erhalten. Im Fehlerfall gibt file() FALSE zurück.
    Also der Zeilenumbruch ist schonmal vorhanden. Nur wird ihn kein Browser der Welt anzeigen wenn nicht 1. der Inhalt zwischen <pre>und</pre> steht oder 2. nl2br() verwendet wurde um die Zeilenumbrüche in <br> zu verwandeln.
    Und innerhalb einer Zeile entfernt dir file() garantiert nix. Dir ist schon bekannt, dass Browser mehr als ein Leerzeichen in Folge zu einem reduzieren ? Könntest du auch mit <pre> umgegehen.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Wer sagt dass ich es im Browser ausgeben möchte?
      Ich speichere es nur in die Datei, dann fallen alle
      \n\t 's weg, nl2br habich schon verwendet, bringt mir
      aber hier nichts, daher auch meine Frage.

      Ich will ja kein <br> oder so, sondern ein stricktes \n
      das in der Datei selbst nur verursacht wird, und somit
      auch nicht als Code sichtbar ist.
      <pre></pre> bringt mir auch nix, da ich z.B. einen Code/bzw.
      String wie
      <?php
      $links = array("www.123.de","www.456.de");
      ?>

      habe, und diesen abspeichern tu, was soll mir da schon also
      ein durch nl2br verursachter code wie
      <?php <br><$links = array("","".................)
      ?>
      genausowenig bringt mir <pre>

      mit html_entity_decode
      nimmt er mir komischerweise wieder meine \n aus file()
      allerdings alles andere wie \t nicht.
      Also wäre html_entity_decode auf Dauer auch keine Lösung,
      vieleicht habich ja nen komplett falschen Lösungsansatz,
      und es geht weniger umständlich, bin über jeden Vorschlag
      erfreut.

      Mein Code:
      PHP-Code:
      function replace_file_string($myFile,$mySearchString,$myNewString)
      {
          
      $new_context file($myFile);

          for(
      $i=0$i<count($new_context); $i++)
          {            
              if(
      strstr($new_context[$i],$mySearchString))
              
      $new_context[$i] = $myNewString."\n";    
          
              
      $new_context[$i] = html_entity_decode($new_context[$i]);
              
      file_put_contents($myFile,$new_context);  
          }   

      mfg & thx darki
      Zuletzt geändert von darki777; 06.03.2007, 10:39.

      Kommentar


      • #4
        Wofür machst du file_put_contents in der Schleife - hältst du es für sinnvoll, die Datei nach jeder Zeile komplett neu zu schreiben?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Wie gesagt, wenn in dem File bereits \n oder \r\n als Zeilenumbruch stehen, dann entfernt diese file() keinesfalls.
          Wenn du das Textfile mit notepad & co öffnest, dann steht doch dort Zeile für Zeile
          Code:
          inrgendeind inhalt
          ein anderer inhalt
          Wenn diese Zeilen untereinander stehen hast du garantiert bereits einen Zeilenumbruch drin.
          Was für ein Betriebssystem verwendest du ?
          EDIT:

          Und wenns ein Windows System ist, dann sollte dir dieser Link http://de.wikipedia.org/wiki/Zeilenumbruch weiterhelfen können.



          Gruss

          tobi
          Zuletzt geändert von jahlives; 06.03.2007, 11:25.
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar

          Lädt...
          X