PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   preg_regplace (https://www.php-resource.de/forum/php-developer-forum/76703-preg_regplace.html)

Avalon03 10-10-2006 12:33

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-Code:

       

               

               
               

                       
<?php
if(isset($_POST['quelltext'])) 
{
echo 
preg_replace('/^\[\d+:\d+:?\d+?\]\s?\<(\w+)\>\s?(.*)$/','${1}: $2',$_POST['quelltext']);
}
?>


               

               

               

       

<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>


ghostgambler 10-10-2006 15:08

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...

Avalon03 10-10-2006 15:13

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

Lennie 10-10-2006 15:25

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.

Avalon03 10-10-2006 15:55

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-Code:

       

               

               
               

                       
<?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);
}
?>


               

               

               

       

</BODY>
</HTML>


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

Avalon03 10-10-2006 16:00

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

ghostgambler 10-10-2006 16:12

Zitat:

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

Avalon03 10-10-2006 16:13

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!

ghostgambler 10-10-2006 16:52

Zitat:

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

Avalon03 10-10-2006 17:01

Es wird doch aber im php-Teil ausgegeben.


Ich guck mir das mit substr. mal an!

ghostgambler 10-10-2006 17:05

Zitat:

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

Avalon03 11-10-2006 10:20

Habs jetzt einigermassen geschafft mir da was zurecht zu basteln :D

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-Code:

       

               

               
               

                       
<?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);
    }
}
?>


               

               

               

       

</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

ghostgambler 11-10-2006 12:52

Zitat:

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

Avalon03 11-10-2006 13:22

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

ghostgambler 11-10-2006 17:18

Zitat:

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^]+


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:24 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG