Zum Inhalt springen

php string manipulationen


kills

Empfohlene Beiträge


<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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen


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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen


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

Link zu diesem Kommentar
Auf anderen Seiten teilen

(.*)

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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