kills Geschrieben 22. September 2003 Geschrieben 22. September 2003 <tr> <td class=navheader width=150px>Vorname:</td><td>Andreas</td> </tr> <tr> <td class=navheader width=150px>Geburtsdatum:</td><td>08.08.08</td> </tr> <tr> <td class=navheader width=150px>Beruf:</td><td>Fachinformatiker</td> </tr> [/PHP] ich möchte diesen string so ersetzen damit er wie folgt aussieht [PHP] <tr> <td class=navheader width=150px>Vorname:</td><td><input type="text" value="Andreas"></td> </tr> <tr> <td class=navheader width=150px>Geburtsdatum:</td><td><input type="text" value="08.08.08"></td> </tr> <tr> <td class=navheader width=150px>Beruf:</td><td><input type="text" value="Fachinformatiker"></td> </tr> ich weiss nicht wie ich das anstellen soll damit das dann automatisiert durchläuft.... also das sind nicht nur diese 3 felder. ist nur ein ausschnitt. könnt ihr mir nen denkanstoß bzw ne lösung geben?! Gruß kills Zitieren
jomama Geschrieben 22. September 2003 Geschrieben 22. September 2003 Also wenn die Struktur immer so ist, kannst du das so realisieren. <table> <? $text="<tr> <td class=navheader width=150px>Vorname:</td><td>Andreas</td> </tr> <tr> <td class=navheader width=150px>Geburtsdatum:</td><td>08.08.08</td> </tr> <tr> <td class=navheader width=150px>Beruf:</td><td>Fachinformatiker</td> </tr>"; $pattern="#(^|\s{1})<td class=navheader width=150px\>([^\s<>]+)</td><td>([^\s<>]+)</td>\r\n#sm"; $replacement="\\1<td class\=navheader width=150px\>\\2</td><td><input type=\"text\" value=\"\\3\"></td>\r\n"; $text=preg_replace($pattern,$replacement,$text); echo $text; ?> </table> Und übrigens Danke für die Übungsaufgabe. Langsam fange ich an zu begreifen, wie man so nen Pattern aufbaut. Fehlt nur die Übung. Zitieren
kills Geschrieben 22. September 2003 Autor Geschrieben 22. September 2003 ich werds ma versuche danke Original geschrieben von jomama Und übrigens Danke für die Übungsaufgabe. Langsam fange ich an zu begreifen, wie man so nen Pattern aufbaut. Fehlt nur die Übung. immer wieder gerne Zitieren
kills Geschrieben 22. September 2003 Autor Geschrieben 22. September 2003 nun möchte ich auch noch in einer textdatei die z.b. 5. Zeile auslesen. wie das? idee? Zitieren
Jaraz Geschrieben 22. September 2003 Geschrieben 22. September 2003 Hi, entweder mit der Funktion file() und dann aufs Array zugreifen. http://de2.php.net/manual/de/print/function.file.php oder bei großen Dateien die Daten zeilenweise einlesen und die gewünschte Zeile "herauspicken". Gruß Jaraz Zitieren
kills Geschrieben 22. September 2003 Autor Geschrieben 22. September 2003 danke nochmal euch beiden. ich hab jetzt mein Formular erweitert aber nun funktioniert die preg_replace nicht mehr überall. könnte es mir jemand so anpassen damits wieder funktioniert. ich blick da aktuell noch nicht so durch. <table bgcolor=#ffffff width=100% height=100%> <tr> <td class=navheader width=150px>Nachname:</td><td>Staab</td><td rowspan='9' align='right'><img src='./seiten/02Mannschaften/011. Mannschaft/01Kader/01Tor Staab Andreas/bild.jpg' alt=' Andreas Staab'></td> </tr> <tr> <td class=navheader width=150px>Vorname:</td><td>Andreas</td> </tr> <tr> <td class=navheader width=150px>Geburtsdatum:</td><td>08.08.08</td> </tr> <tr> <td class=navheader width=150px>Beruf:</td><td>Fachinformatiker</td> </tr> <tr> <td class=navheader width=150px>Familienstand:</td><td>Ledit</td> </tr> <tr> <td class=navheader width=150px>Position:</td><td>Tor</td> </tr> <tr> <td class=navheader width=150px>Im Verein seit:</td><td>09.09.09</td> </tr> <tr> <td class=navheader width=150px>Größter sportlicher Erfolg:</td><td>Gewunne</td> </tr> <tr> <td class=navheader width=150px>Sportliches Vorbild:</td><td>Markus Staab </td> </tr> </table> [/code] [PHP] // aktueller Code: $pattern="#(^|\s{1})<td class=navheader width=150px\>([^\s<>]+)</td><td>([^\s<>]+)</td>\r\n#sm"; $replacement="\\1<td class\=navheader width=150px\>\\2</td><td><input type=\"text\" value=\"\\3\"></td>\r\n"; $text=preg_replace($pattern,$replacement,$text); [/PHP] Zitieren
jomama Geschrieben 22. September 2003 Geschrieben 22. September 2003 // aktueller Code: $pattern="#(^|\s{1})<td class=navheader width=150px\>([^[b]\s[/b]<>]+)</td><td>([^\s<>]+)</td>\r\n#sm"; $replacement="\\1<td class\=navheader width=150px\>\\2</td><td><input type=\"text\" value=\"\\3\"></td>\r\n"; $text=preg_replace($pattern,$replacement,$text); Ich denke, es müsste reichen, wenn du das markierte rauslöschst. \s kennzeichnet einen "Whitespace". Ich denke, es liegt an den Leerzeichen. Probiers mal aus und sag, obs funktioniert hat. Hab den Pattern übrigens mit den Angaben von www.dclp-faq.de erstellt. Kannst du dir ja mal anschauen, ist äusserst nützlich. Zitieren
kills Geschrieben 22. September 2003 Autor Geschrieben 22. September 2003 nochmals vielen danke für die antwort. es geht jetzt bei mehr feldern als zuvor aber immer noch nicht bei allen. beim feld "Nachname" und "Sportliches Vorbild" gehts noch nicht. Gruß kills Zitieren
jomama Geschrieben 23. September 2003 Geschrieben 23. September 2003 Hmm, beim einen stimmt die Struktur nicht mit den anderen überein. Das kann nicht funktionieren. Beim anderen stört die Klammer beim Smilie, denk ich. Ich probier mal was aus. Zitieren
kills Geschrieben 23. September 2003 Autor Geschrieben 23. September 2003 ich habs ma so umgebaut. leider hat ich jetzt ein paar fehlerchen drinne $sPattern = "(^|[\s]{1,1})<td class=navheader(.*)>([^<>]+)</td><td>([^<>]+)</td>"; $sReplacement = "\\1<td class=navheader \\2>\\3</td><td><input type=\"text\" value=\"\\4\" name=\"playerdatafields[\"\\4\"]\"></td>"; [/PHP] PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 196 PHP Warning: Unknown modifier '<' in C:\wwwroot\~dpd\cgi-bin\sve\functions.php on line 202 Zitieren
jomama Geschrieben 23. September 2003 Geschrieben 23. September 2003 //Replacement $pattern="#(^|\s{1})<td class=navheader width=150px\>([^<>]+)</td><td>([^<>]+)</td>#sm"; $replacement="\\1<td class\=navheader width=150px\>\\2</td><td><input type=\"text\" value=\"\\3\"></td>\r\n"; $text=preg_replace($pattern,$replacement,$text); So Passts. In der ersten Klammer stand noch ein \s, heisst, er hat nach Leerzeichen geprüft, deshalb wurden die unteren beiden angezeigt. Ausserdem bin ich zuerst davon ausgegangen, das alle Zeilen ein \r\n am Ende haben, weil eine neue Zeile anfängt, da das aber beim ersten nicht der Fall ist, musst ichs rauslöschen, und siehe da, es funzt. :uli Zitieren
jomama Geschrieben 23. September 2003 Geschrieben 23. September 2003 (.*) Das hier aus deinem Code heisst übrigens beliebige Anzahl Zeichen, darum bricht er bei < nicht ab, sondern liesst bis zum Ende der Zeile. Sowas musst du mit ([^<>]) machen. [] umschliest eine Zeichenmenge, ^ verneint die Zeichenmenge, d.h. er sucht alle Zeichen ausser < und >. Wenn du direkt nach Sonderzeichen wie einer Klammer suchst, musst du die mit Backslash kennzeichnen Viel Spaß noch beim Basteln. Zitieren
kills Geschrieben 23. September 2003 Autor Geschrieben 23. September 2003 hi danke nochmal für deine hilfe. ich habs übrigens selbst mittlerweile auch schon hinbekommen $sPattern = "/<td class=navheader(.*)>([^<>]+):<\/td><td>([^<>]+)<\/td>/"; $sReplacement = "<td class=navheader $1>$2</td><td><input type=\"text\" value=\"$3\" name=\"playerdatafields[\"$2\"]\"></td>"; $sRow = preg_replace( $sPattern, $sReplacement, $sRow); [/PHP] btw: das mit den reg expr. rock voll macht voll bock :cool: PS: hab mir eben auf die schnellen nen reg expr. editor gebastelt. wenn du interesse hast kannste ihn auch haben (php) Zitieren
jomama Geschrieben 23. September 2003 Geschrieben 23. September 2003 Als ausgebildeter Fachinformatiker kann ich natürlich jedes Tool brauchen. Du kannst den Code hier posten oder an holladrio@alpenjodel.de schicken. THX! Zitieren
kills Geschrieben 23. September 2003 Autor Geschrieben 23. September 2003 Original geschrieben von jomama Als ausgebildeter Fachinformatiker kann ich natürlich jedes Tool brauchen. Du kannst den Code hier posten oder an holladrio@alpenjodel.de schicken. THX! is schon raus Als auszubildenter FiSi bin ich auch auf alles stolz was ich programmiert hab Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.