kostenloser Webspace werbefrei: lima-city


String zwischen zwei Teilstrings heraus-filtern ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    lukepress

    lukepress hat kostenlosen Webspace.

    Hallo

    wie kann ich aus einem String einen bestimmten Teil heraus-filtern,
    welcher sich zwischen zwei "Markern" = Teilstrings befindet ... ?!?

    oder anders gefragt:
    warum bekomme ich hier zwar ein Array, das aber komplett leer ist ???
    (die Struktur ist vorhanden, Keys, aber die Werte sind jeweils leer / nix drin)

    die Variable $meinstring enthält entsprechende Inhalte (z.B. Kommentar-Text)

    $pattern = '#<!-- ([\w]+) -->(.*)<!-- ([\w]+) -->#is';
    
    preg_match_all($pattern, $meinstring, $ergebnis); 
    
    echo "<pre> \r\n"; 
    print_r($ergebnis);
    echo "</pre> \r\n";



    Ergebnis:
    ----------------------------------

    Array
    (
    [0] => Array
    (
    )

    [1] => Array
    (
    )

    [2] => Array
    (
    )

    [3] => Array
    (
    )

    )

    ----------------------------------

    was ist falsch?
    HELP ?!

    edit:
    oder als Alternative: String vor und nach den Markern abschneiden
    und dannn noch die Marker entfernen .... oder so ... Stringfunktionen?
    ?

    Beitrag zuletzt geändert: 4.9.2010 16:29:56 von lukepress
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Ich denke mal das was fabo geschrieben hat kommt dem zwar recht nahe, aber eine einfache Methode wäre einfach den String durchzugehen...


    also per for/while-schleife gucken wann

    substr($string,$zaehler,1)==$trennzeichen

    dann einfach den String davor abschneiden und das ganze ein zweites Mal machen und in diesem Fall alles abschneiden was dahinter steht. So kannst du auch ein Trennzeichen zweimal verwenden. Man sollte jedoch absichern das man in seiner Schleife stoppt wenn man die Länge des Strings zu überschreiten versucht..


    Leistungstechnisch wird fabo's Methode jedoch um einiges besser sein, da du hier ja den gesamten String durchsuchst. Als kompletter Code würde mein Vorschlag wohl in etwa so aussehen:

    function suche($string, $trennzeichen){
    for($i=0;$i<strlen($string)&&substr($string,$i,1)!=$trennzeichen;$i++){
    }
    $string=substr($string,0, $i+1);
    for($i=0;$i<strlen($string)&&substr($string,$i,1)!=$trennzeichen;$i++){
    }
    return substr($string,0, $i);
    }


    Ich habe das jedoch nicht nochmal getestet, kann sein das bei $i+1 nur $i hin muss, aber das findet man ja schnell durch ausprobieren heraus.
  4. Ich hab da so eine Vermutung, probier mal diesen pattern aus, ich glaube der wird dir helfen:
    $pattern = '#<!-- ([\w\s]+?) -->(.*?)<!-- ([\w\s]+?) -->#is';
  5. aus performance-gründen sollte man preg... sachen nur in begründeten fällen anwenden. hier ist es unbegründet, daher eine einfache lösung:
    (
    hier findest viele zeichen für die markierung, die normal sehr selten vorkommen.
    ich habe für start utf8 [U+2639 WHITE FROWNING FACE]: "&#x02639;" und
    für end utf8 [U+263A WHITE SMILING FACE] : "&#x0263a;" genommen.
    die funktion ist ein einzeiler
    ;o)

    <?php
    $startmarke  = "☹";
    $endmarke    = "☺";
    $text = "das ist ein string☹lorem ipsum dolor sit amet☺mit start und endmarke!";
    
    exit ("<h4>string zwischen marken ausgeben:</h4>\n<pre>\n".print_r (zwischenstring ($startmarke, $endmarke, $text), true));
    
    
    # parameter:
    #   @startmarke, @endmarke, @text
    function zwischenstring ($s, $e, $t) {
      return reset (explode ($e, end (explode ($s, $t))));
    }
    ?>
  6. Meinst du vllt. sowas:
    <?php
    $text = "<b>y</b>";
    $reg_expression = "/\<b\>(.*)\<\/b\>/iU";//Marker wären hier <b> und </b>
    $reg_exchange = "$1";
    echo preg_replace($reg_expression,$reg_exchange, $text);
    ?>


    Ausgabe wäre: y

    War sowas gemeint?
  7. 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!