ilch Forum » Allgemein » HTML, PHP, SQL,... » String anhand eines Arrays durchsuchen

Geschlossen
  1. #1
    User Pic
    Revolution Hall Of Fame
    Registriert seit
    14.08.2006
    Beiträge
    1.688
    Beitragswertungen
    108 Beitragspunkte
    Hey,
    irgendwie bin ich grade zu doof eine Funktion zu schreiben, vll. hat jemand von euch eine Idee. (Ist für einen guten Zweck) lachen
    Ich denke einfach mal ich hab irgendwo einen Logik fehler.

    Was soll die Funktion können:
    Gefüttert wird Sie mit zwei Variablen
    1. einem String, mit viel Text
    2. einem Array ['ab','cd']

    Rückgabe wird dann wieder ein Array.

    function array_in_str($fString, $fArray) {
    
    }


    Die Funktion muss nun die Werte des Arrays innerhalb des Strings finden
    und die Position speichern.

    Mein Ansatz war:
    function array_in_str($fString, $fArray) {
    	
      $rMatch = array();
     
      foreach($fArray as $Value) {
    	  
        $Pos = stripos($fString,$Value);
    	
        if($Pos !== false){
          $rMatch[] = array( "Start"=>$Pos,
                             "End"=>$Pos+strlen($Value)-1,
                             "Value"=>$Value
                           );
    					   
    					   echo $Pos.' ';
    	}
      }
    
      return $rMatch;
    
    }


    Allerdings wird diese Funktion natürlich nur so oft durchgeführt wie Array Einträge vorhanden.
    Und das hilft mir nicht wirklich weiter, da es ja noch X weitere sein können.

    Hat da jemand eine Idee, würde mich sehr freuen wenn ja lachen


    Zuletzt modifiziert von Revolution am 10.07.2013 - 18:30:12
    Kreativ, modern, Conversion und Usability optimiert
    individuelles Webdesign für ein optimales Erscheinungsbild
    404studios
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    OloX Hall Of Fame
    Registriert seit
    25.02.2006
    Beiträge
    991
    Beitragswertungen
    23 Beitragspunkte
    Hey Revolution,

    hier mal ein Lösungsvorschlag von mir zwinker Der Reguläre Ausdruck muss ggf. noch angepasst werden.
    <?php
    
    function array_in_str($fString, $fArray) 
    {
    	$rMatch = array();
    	foreach($fArray as $Value)
    	{
    		$pattern = "/\s$Value\s/";
    		if( preg_match_all($pattern, $fString, $matches, PREG_OFFSET_CAPTURE) )
    		{
    			foreach($matches[0] as $match)
    			{
    				$rMatch[] = array( 
    								"Start" => $match[1]+1,
    								"End"   => ($match[1]+1)+strlen($Value),
    								"Value" => $Value
    							);
    			}
    		}
    	}
    	return $rMatch;
    }
    
    $subject = 'Das ist ein foobar test mit viel foo und viel bar !';
    $words = array('bar', 'foobar', 'foo', 'test');
    
    echo '<pre>';
    print_r( array_in_str($subject, $words) );
    echo '</pre>';
    
    ?>


    MfG OloX
    PHP, JavaScript, C/C++, CSS, HTML
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten