kostenloser Webspace werbefrei: lima-city


Prüfen wie oft <td> in Variable vorkommt und </td> nicht vorkommt.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. d***********a

    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
    <td style="blub">
    finden, empfehle ich preg_match_all.
    Dazu siehe http://de.php.net/preg_match_all
    $pattern könnte in deinem Fall so etwas wie '/(\<td ?)([^>]*)(\>)/' sein.

    Grüße Chris
  4. 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;
    ?>
  5. d***********a

    @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;
    
    ?>
  6. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    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
  7. d***********a

    Siehe meinen ersten Beitrag :D
  8. 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]);

  9. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    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!
  10. 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]
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!