Ankündigung

Einklappen
Keine Ankündigung bisher.

Bestimmte Wörter ersetzen

Einklappen

Neue Werbung 2019

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

  • Bestimmte Wörter ersetzen

    Ist es möglich, Wörter auszublenden/ersetzen ohne diese in eine Variable zu setzen?

    Also es soll schonmal nicht so aussehen

    PHP-Code:
    $text "PHP setzt viele \"Sonderzeichen\" ein,\nda gewisse Zeichen in PHP\neine spezielle Bedeutung haben.";
    $text preg_replace("/spezielle/","besondere",$text); 
    Ich habe so einen Fall:

    PHP-Code:
    echo '%qwe%<li>
    <a href="/Webseite/index.html">
    Homepage
    </a>
    </li>%wer%'

    Darin möchte ich jetzt %qwe% und %wer% ersetzen!

    Es soll die komplette PHP Datei durchsuchen.
    Funktioniert das etwa mit preg_replace_all?

    Freue mich auf eure Hilfe!


  • #2
    Wieso preg_? str_replace() reicht doch (und kann übrigens auch mit arrays() arbeiten).
    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


    • #3
      Also es soll schonmal nicht so aussehen
      Warum nicht?

      Lässt du dir von den fleißigen Helfern deine Navigation zusammenbauen? Vielleicht solltest du mal in die Scriptbörse posten... oder nicht, aber bitte versuche die Startposts etwas ausführlicher zu gestalten. Es ist doch schrecklich wenn immer erst nachgefragt werden muss.
      Dir steht auch frei, mal deine gesamte Idee zu präsentieren, von dem was ich bis jetzt mitgekriegt habe, machst du es dir ziemlich umständlich.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar


      • #4
        //O=T:
        mich würde auch interessieren, was du alles hättest finden können.

        Kommentar


        • #5
          Zitat von 199708897 Beitrag anzeigen
          Ist es möglich, Wörter auszublenden/ersetzen ohne diese in eine Variable zu setzen?
          Prinzipiell ja. Für viele Ersetzungen genügen String-Literale oder Rückgabewerte von Funktionsaufrufen.

          Also es soll schonmal nicht so aussehen

          PHP-Code:
          $text "PHP setzt viele \"Sonderzeichen\" ein,\nda gewisse Zeichen in PHP\neine spezielle Bedeutung haben.";
          $text preg_replace("/spezielle/","besondere",$text); 
          Warum nicht?

          Ich habe so einen Fall:

          PHP-Code:
          echo '%qwe%<li>
          <a href="/Webseite/index.html">
          Homepage
          </a>
          </li>%wer%'

          Darin möchte ich jetzt %qwe% und %wer% ersetzen!
          PHP-Code:
          strtr(
              
          $src
              array (
                  
          '%qwe' => 'irgendwas'
                  
          '%wer' => 'sonstwas'
              
          )
          ); 
          Es soll die komplette PHP Datei durchsuchen.
          Funktioniert das etwa mit preg_replace_all?
          Nein. Keine PHP-String-Suchen-und-Ersetzen-Funktion arbeitet direkt auf Dateien (abgesehen von Stream-Filtern).

          Freue mich auf eure Hilfe!
          Ich freue mich über gut durchdachte Fragen.
          Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

          Kommentar


          • #6
            Zitat von VPh Beitrag anzeigen
            Warum nicht?

            Lässt du dir von den fleißigen Helfern deine Navigation zusammenbauen? Vielleicht solltest du mal in die Scriptbörse posten... oder nicht, aber bitte versuche die Startposts etwas ausführlicher zu gestalten. Es ist doch schrecklich wenn immer erst nachgefragt werden muss.
            Dir steht auch frei, mal deine gesamte Idee zu präsentieren, von dem was ich bis jetzt mitgekriegt habe, machst du es dir ziemlich umständlich.
            hmm gut, es tut mir leid.

            meine idee ist es, alles was zwischen %qwe% und %wer% steht in einem CMS ersetzen zu können, um z.B den navigations-menue namen oder den link zu ändern, löschen, hinzufügen usw. dabei sind solche dinger: %wer% und %qwe% platzhalter, damit das php weiß, wie es wo was ändern soll. es gibt mehrere platzhalter überall verteilt.

            INFO -> sowas habe ich mir im kopf ganz spontan ausgedacht, da es mir als plausibel und am einfachsten erschien, wenn es bessere möglichkeiten gibt bin ich natürlich ganz dazu offen!!

            PHP-Code:
            echo '%qwe%<li>
            <a href="/Webseite/index.html">
            Homepage
            </a>
            </li>%wer%'

            Kommentar


            • #7
              Darin möchte ich jetzt %qwe% und %wer% ersetzen!
              meine idee ist es, alles was zwischen %qwe% und %wer% steht in einem CMS ersetzen zu können
              Was denn nun? Die Platzhalter selbst ersetzen oder zwischen den Platzhaltern (inkl.) ersetzen? Das ist ein Unterschied.

              Wenn du dazwischen (inkl. Platzhalter) ersetzen? Ja, dann bieten sich regex an.

              Versuch es mal mit diesem Pattern:
              Code:
              /%qwe%.*%wer%/U
              https://www.regex101.com/r/kE5dF3/1

              LG
              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


              • #8
                Zitat von hausl Beitrag anzeigen
                Was denn nun? Die Platzhalter selbst ersetzen oder zwischen den Platzhaltern (inkl.) ersetzen? Das ist ein Unterschied.

                Wenn du dazwischen (inkl. Platzhalter) ersetzen? Ja, dann bieten sich regex an.

                Versuch es mal mit diesem Pattern:
                Code:
                /%qwe%.*%wer%/U
                https://www.regex101.com/r/zA3lL0/1

                LG
                ersteinmal nur %qwe% %wer% ersetzen.

                das was dazwischen steht wird wirklich in der datei bearbeitet (ersetzt).

                im navigationsmenü wird jetzt wegen dem echo %qwe% %wer% angezeigt. die möchte ich irgendwie ausblenden >< sieht ja hässlig aus. da das preg_replace ja nicht die datei an sich verändert und nur dass, was es schließlich anzeigt, sollte es ja kein problem sein.

                oder?

                daher wollte ich ersteinmal %qwe% %wer% ausblenden.

                Kommentar


                • #9
                  Ich versteh es nicht, wenn du die Platzhalter weghaben wilsst, dann entferne die doch einfach, also auf das bezogen:

                  PHP-Code:
                  echo '%qwe%<li> 
                  <a href="/Webseite/index.html"> 
                  Homepage 
                  </a> 
                  </li>%wer%'

                  Ansonsten, ja zur Laufzeit entfernen, wie das wurde oben denke ich schon ausreichend erläutert mit Varianten und Beispielen.
                  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


                  • #10
                    Zitat von hausl Beitrag anzeigen
                    Ich versteh es nicht, wenn du die Platzhalter weghaben wilsst, dann entferne die doch einfach, also auf das bezogen:



                    Ansonsten, ja zur Laufzeit entfernen, wie das wurde oben denke ich schon ausreichend erläutert mit Varianten und Beispielen.

                    hmm wie kann ich es am besten erklären.

                    bei _replace wird ja das wort %qwe% ersetzt und das ersetzte wort (z.B. hund) auf der webseite angezeigt., aber in der datei SELBER bleibt das wort %qwe% noch erhalten/geschrieben. so hatte ich es in erinnerung jedenfalls.

                    was ich später machen möchte ist, die datei zu beschreiben

                    $datei = fopen("menue.php","r+");

                    um dass, was zwischen dem %qwe% und %wer% steht zu ändern.

                    dabei sind %qwe% und %wer% eines der vielen platzhaltern, damit sich das php orientieren kann, wo was liegt.


                    ich hoffe ich komm halb so blöd rüber ihr kennt sicher effektivere methoden. ihr würdet das sicher mit datenbanken erledigen, das meine methode ja als unsicher gilt.

                    Kommentar


                    • #11
                      Zitat von hausl Beitrag anzeigen
                      Was denn nun? Die Platzhalter selbst ersetzen oder zwischen den Platzhaltern (inkl.) ersetzen? Das ist ein Unterschied.

                      Wenn du dazwischen (inkl. Platzhalter) ersetzen? Ja, dann bieten sich regex an.

                      Versuch es mal mit diesem Pattern:
                      Code:
                      /%qwe%.*%wer%/U
                      https://www.regex101.com/r/kE5dF3/1

                      LG
                      das sieht gut aus, danke!

                      Kommentar

                      Lädt...
                      X