Prüfen wie oft <td> in Variable vorkommt und </td> nicht vorkommt.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufgefallen
bestimmter string
code
dank
differenz
ende
ersten beitrag
fehler
festen string
funktion
http
idee
jemand
match
meinung
problem
raten
string
variable matches
vorkommen
-
Hallo LC,
Ich habe in einer Variable in der z.b Das gespeichert ist:
$Variable ="hjufhjxfjhbxcvhfjkh<td>hjkjjkhjkhjkh</td><td>";
Ich will jetzt prüfen wie oft <td> vorkommt. und wie oft </td> vorkommt.
so wenn jetzt mehr <td> vorkommen als </td> soll an Ende der Variable ein zusätzliches </td> gesetzt werden.
z.B:
$Variable ="hjufhjxfjhbxcvhfjkh<td><td>hjkjjkhjkhjkh"; //soll zu: $Variable ="hjufhjxfjhbxcvhfjkh<td><td>hjkjjkhjkhjkh</td></td>"; // werden.
Hat jemand ne Idee ich ich das machen kann?
Wäre euch echt Dankbar!
edit:Wäre euch wirklich wirklich Dankbar!
Beitrag zuletzt geändert: 5.2.2010 22:19:56 von christian1603 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mit substr_count kannst du prüfen wie oft ein bestimmter String in einem anderen String enthalten ist.
Dazu siehe http://de.php.net/substr_count
Möchtest du auch sowas wie
finden, empfehle ich preg_match_all.<td style="blub">
Dazu siehe http://de.php.net/preg_match_all
$pattern könnte in deinem Fall so etwas wie '/(\<td ?)([^>]*)(\>)/' sein.
Grüße Chris -
Ich hab dir hier mal einen Code geschrieben, der genau das machen sollte, was du möchtest:
<?php $var = "hjufhjxfjhbxcvhfjkh<td><td>hjkjjkhjkhjkh"; preg_match_all("<td>", $var, $matches); $td = count($matches[0]); preg_match_all("</td>", $var, $matches); $std = count($matches[0]); $differenz = $td - $std; if ($differenz > 0) { for($i = 1; $i <= $differenz; $i++) { $var.="</td>"; } } echo $var; ?>
-
@mermadalis:
preg_match_all gibt bereits die Anzahl der gefundenen Substrings zurück, da brauchst du die Länge der Variable $matches nicht mehr prüfen.
Zudem ist es, meiner Meinung nach, fraglich, warum du eine Funktion, die gedacht ist, um nach regulären Ausdrücken zu suchen, dazu verwendest, einen festen String zu suchen.
Wenn nur nach einem festen String gesucht werden soll würde ich sehr zu substr_count raten.
Du kannst also gleich das hier schreiben:
<?php $var = "hjufhjxfjhbxcvhfjkh<td><td>hjkjjkhjkhjkh"; $differenz = substr_count($var,"<td>") - substr_count($var,"</td>"); if ($differenz > 0) { for($i = 1; $i <= $differenz; $i++) { $var.="</td>"; } } echo $var; ?>
-
Danke Euch beiden.Danke Euch beiden.
Mir ist nur ein Problem aufgefallen wenn z.b
<td style="ihrgentwas"> steht wird das nicht geschlossen kann man das noch irgend wie machen?
dapizzafressa schrieb:
Siehe meinen ersten Beitrag :D
DANKE!^^
Beitrag zuletzt geändert: 5.2.2010 22:49:54 von christian1603 -
Siehe meinen ersten Beitrag :D
-
Der entsprechende veränderte Code wäre dann :
<?php $var = "hjufhjxfjhbxcvhfjkh<td><td>hjkjjkhjkhjkh"; preg_match_all('/<td[^\>]*> /i'", $var, $matches); $td = count($matches[0]); preg_match_all("</td>", $var, $matches); $std = count($matches[0]); $differenz = $td - $std; if ($differenz > 0) { for($i = 1; $i <= $differenz; $i++) { $var.="</td>"; } } echo $var; ?>
verändert hat sich:
preg_match_all('/<td[^\>]*> /i'", $var, $matches); $td = count($matches[0]);
-
simuliertes schrieb: Der entsprechende veränderte Code wäre dann :
<?php $var = "hjufhjxfjhbxcvhfjkh<td><td>hjkjjkhjkhjkh"; preg_match_all('/<td[^\>]*> /i'", $var, $matches); $td = count($matches[0]); preg_match_all("</td>", $var, $matches); $std = count($matches[0]); $differenz = $td - $std; if ($differenz > 0) { for($i = 1; $i <= $differenz; $i++) { $var.="</td>"; } } echo $var; ?>
verändert hat sich:
preg_match_all('/<td[^\>]*> /i'", $var, $matches); $td = count($matches[0]);
mh da ist ein Fehler ?!
preg_match_all('/<td[^\>]*> /i'", $var, $matches);
hier soll ein Problem mit den " sein! -
christian1603 schrieb:
(..)
mh da ist ein Fehler ?!
preg_match_all('/<td[^\>]*> /i'", $var, $matches);
hier soll ein Problem mit den " sein!
ja sorry ein ' zu viel:
[code]preg_match_all('/<td[^\>]*> /i', $var, $matches); $td = count($matches[0]);
[/quote]
[/code] -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage