preg_regplace

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

  • preg_regplace

    Mein Programm

    Wenn ich in das Textfeld z.B. folgendes eingebe:

    [19:12:23]<Avalon>Hallo! Das ist ein Test

    soll das asugeben werden:

    Avalon: Hallo! Das ist ein Test

    Das klappt auch soweit. Aber wenn ich nun mehrer Zeilen eingebe, dann spinnt er rum:

    z.B:

    Eingabe:

    [19:19:16]<Avalon>lalala
    [19:19:18]<Shadoman>lalala

    Ausgabe:

    [19:19:16]lalala [19:19:18]lalala



    Mein Quellcode:
    Code:
    <HTML>
    <HEAD>
    <TITLE>Test </TITLE>
    
    </HEAD>
    
    <BODY>
    [PHP]<?php
    if(isset($_POST['quelltext'])) 
    {
    echo preg_replace('/^\[\d+:\d+:?\d+?\]\s?\<(\w+)\>\s?(.*)$/','${1}: $2',$_POST['quelltext']);
    }
    ?>[/PHP] 
    <form action="test.php" method="POST">
    <br>
    <textarea name="quelltext" wrap="physical" cols=50 rows=10></textarea>
    <br>
    <input type="submit" name="submit" value="ausrechnen">
    <input type="reset" value="reset">
    </form>
    </BODY>
    </HTML>

  • #2
    Re: preg_regplace

    PHP-Code:
    <?php
    if(isset($_POST['quelltext']))  {
      
    $exploded explode("\n"$_POST['quelltext']);
      foreach (
    $exploded as $key => $value) {
        
    $exploded[$key] = preg_replace('dein regex''dein replace'$value);
      }
      echo 
    implode("\n"$exploded);
    }
    ?>
    ist zwar so performant wie nix, aber sollte es tun...

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Schonmal danke für deine Antwort.


      Könntest du dein Code bitte noch was erläutern. Bin ein ziemlicher PHP-Neuling.

      Kann ich dein Code so übernehmen oder muss ich da noch Sachen berücksichtigen?

      Danke

      Kommentar


      • #4
        1. bei der eingabe von

        [19:18:22]<"Avalon">Das ist ein Test.
        [19:22:23]Juhu, es geht!

        wird


        [19:18:22]<\"Avalon\">Das ist ein Test.
        [19:22:23]Juhu, es geht!

        ausgegeben. wenn ich es bei deiner seite mahe.

        du musst natürlich noch die einzelnen ersätzungen definieren.
        zum beispiel

        $inhalt = "[23:23:23]Hallo!";
        $inhalt = preg_replace("[(.*?)]", "//1 - ", $inhalt);
        echo $inhalt;

        würde

        22:23:23 - Hallo!

        ausgeben.
        vielleicht informierst du dich noch über die angewanten functionen von oben. explode und implode

        dieses teil solltest du an die preg_replace stelle füllen, die oben gestellt wurde. allerdings musst du den variablen namen angleichen.
        Zuletzt geändert von Lennie; 10.10.2006, 14:30.
        Webdesign und Webentwicklung - Plunix.de

        Kommentar


        • #5
          Danke für die Antworten.

          Ich hatte nen kleinen Fehler auf der Seite im Beispiel.
          Habs mal berichtigt.

          http://schlafbaer.sc.ohost.de/test.php

          Code:
          <HTML>
          <HEAD>
          <TITLE>mIRC-Changer </TITLE>
          </HEAD>
          <BODY bgcolor=skyblue>
          <h1>mIRC-Changer</h1>
          <br>
          <br>
          Hier kann man IRC-Logs in eine normale Dialogform umwandeln.
          <br>
          <br>
          z.B.:
          <br>
          <br>
          <b>Eingabe:</b>
          <br>
          [19:18:22]&lt;Avalon&gt;Das ist ein Test.
          <br>
          [19:22:23]&lt;Avalon&gt;Juhu, es geht!
          <br>
          <br>
          <b>Ausgabe:</b>
          <br>
          Avalon: Das ist ein Test.
          <br>
          Avalon: Juhu, es geht!
          <br>
          <form action="test.php" method="POST">
          <br>
          <textarea name="quelltext" wrap="physical" cols=50 rows=10></textarea>
          <br>
          <input type="submit" name="submit" value="ausrechnen">
          <input type="reset" value="reset">
          </form>
          <br>
          [PHP]<?php
          if(isset($_POST['quelltext']))  {
            $exploded = explode("\n", $_POST['quelltext']);
            foreach ($exploded as $key => $value) {
              $exploded[$key] = nl2br(preg_replace('/^\[\d+:\d+:?\d+?\]\s?\<(\w+)\>\s?(.*)$/', '${1}: $2', $value));
            }
            echo implode("\n", $exploded);
          }
          ?>[/PHP] 
          </BODY>
          </HTML>

          Nun funktioniert es. (Hoffe ich zumindest *lach*)

          Kommentar


          • #6
            So habe nun noch eine Frage:


            Ich möchte das Zeilen die mit einem * beginnen gelöscht werden.

            Und ich möchte die Ausgabe farbig haben, am besten in Rot!

            Danke schonmal im Voraus
            Zuletzt geändert von Avalon03; 10.10.2006, 15:02.

            Kommentar


            • #7
              Original geschrieben von Avalon03
              So habe nun noch eine Frage:


              Ich möchte das Zeilen die mit einem * beginnen gelöscht werden.

              Und ich möchte die Ausgabe farbig haben, am besten in Rot!

              Danke schonmal im Voraus
              tjo, dann mach doch

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Würde ich ja gerne, aber ich weiss nicht wie das geht


                Ich bräuchte da doch eurer Hilfe.

                Und dann soll da noch was rein.

                http://schlafbaer.sc.ohost.de/test.php


                Einfach mal auf die Seite gucken, das müsste eigentlich selbsterklärend sein!
                Zuletzt geändert von Avalon03; 10.10.2006, 15:42.

                Kommentar


                • #9
                  Original geschrieben von Avalon03
                  Würde ich ja gerne, aber ich weiss nicht wie das geht
                  Dann wirst du jetzt erstmal HTML lernen, "rot" hat nichts mit PHP zutun
                  und danach wirst du dir substr angucken

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Es wird doch aber im php-Teil ausgegeben.


                    Ich guck mir das mit substr. mal an!

                    Kommentar


                    • #11
                      Original geschrieben von Avalon03
                      Es wird doch aber im php-Teil ausgegeben.
                      Und was gibst du im php-Teil aus?
                      HTML.

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Habs jetzt einigermassen geschafft mir da was zurecht zu basteln

                        Code:
                        <HTML>
                        <HEAD>
                        <TITLE>mIRC-Changer </TITLE>
                        </HEAD>
                        <BODY bgcolor=skyblue>
                        <h1>mIRC-Changer</h1>
                        <br>
                        <br>
                        Hier kann man IRC-Logs in eine normale Dialogform umwandeln.
                        <br>
                        <br>
                        z.B.:
                        <br>
                        <br>
                        <b>Eingabe:</b>
                        <br>
                        <U>Style1:</U> [19:18:22]&lt;Avalon&gt;Das ist ein Test.
                        <br>
                        <U>Style2:</U> (19:22:23)(@Avalon)Das ist ein Test.
                        <br>
                        <br>
                        <b>Ausgabe:</b>
                        <br>
                        <U>Style1:</U> <font color=red>Avalon:<font color=black> Das ist ein Test.
                        <br>
                        <U>Style2:</U> <font color=red>Avalon:<font color=black> Das ist ein Test.
                        <br>
                        <form action="test.php" method="POST"><br>
                        Style1:<input type="radio" value="0" name="style">
                        <br>
                        Style2:<input type="radio" value="1" name="style">
                        <br>
                        <textarea name="quelltext" wrap="virtual" cols=50 rows=10></textarea>
                        <br>
                        <input type="submit" name="submit" value="ausführen">
                        <input type="reset" value="reset">
                        </form>
                        <br>
                        <br>
                        [PHP]<?php
                        if($_POST['style'] == 0) {
                        	if(isset($_POST['quelltext']))  {
                        	 $exploded = explode("\n", $_POST['quelltext']);
                        	 foreach ($exploded as $key => $value) {
                        		if($exploded[$key][0]!='*')
                        			$exploded[$key] = "<font color=\"#FF0000\">".nl2br(preg_replace('/^\[\d+:\d+:?\d+?\]\s?\<(\w+)\>\s?(.*)$/', '${1}: $2', $value));
                        		else 
                        			$exploded[$key]='';
                        		}
                        		$exploded = str_replace(":",":</font>",$exploded);
                        		echo implode("\n", $exploded);
                        	}
                        }
                        if($_POST['style'] == 1) {
                        	if(isset($_POST['quelltext']))  {
                        	 $exploded = explode("\n", $_POST['quelltext']);
                        	 foreach ($exploded as $key => $value) {
                        	   if($exploded[$key][0]!='*')
                        			$exploded[$key] = "<font color=\"#FF0000\">".nl2br(preg_replace('/^\(\d+:\d+:?\d+?\)\s?\(@(\w+)\)\s?(.*)$/', '${1}: $2', $value));
                        		else 
                        			$exploded[$key]='';
                        		}
                        		$exploded = str_replace(":",":</font>",$exploded);
                        		echo implode("\n", $exploded);
                        	}
                        }
                        ?>[/PHP] 
                        </BODY>
                        </HTML>
                        Allerdings habe ich nun folgendes Problem:

                        Ich habe nen Dialog:

                        [23:37] <dio> bla1
                        [23:37] <Isso^away> bliblablu
                        [23:38] <dio> test die erste einzubringen

                        allerdings stimmt die Ausgabe nicht. Kann das was mit dem Namen Isso^away zu tun haben?

                        http://schlafbaer.sc.ohost.de/test.php

                        Kommentar


                        • #13
                          Kann das was mit dem Namen Isso^away zu tun haben?
                          Klar kann...
                          Zum Beantworten erstellt man sich ein Testcase und probiert ob \w ein ^-Character matcht

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar


                          • #14
                            Und wie kann man das ändern?
                            Damit er das anständig umwandelt?

                            Kommentar


                            • #15
                              Original geschrieben von Avalon03
                              Und wie kann man das ändern?
                              Damit er das anständig umwandelt?
                              indem man statt \w z.B. eine char-class nimmt
                              [a-zA-Z0-9^]+

                              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                              Wie man Fragen richtig stellt

                              Kommentar

                              Lädt...
                              X