Zum Inhalt springen

Empfohlene Beiträge

Geschrieben


<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

Geschrieben

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.

Geschrieben

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

Geschrieben

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]

Geschrieben


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

Geschrieben

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

Geschrieben

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

Geschrieben


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

Geschrieben

(.*)

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.

Geschrieben

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)

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...