Hi, Thursday, October 17, 2002, 10:33:43 PM, you wrote: CC> I have looked at these, and they make no sense to me. I tried the substr CC> function, but it all went a bit pear shaped.
Here is a way that will handle line breaks which tend to stuff up the string functions: <? function find_string($string,$str1,$str2){ $x = $y = 0; $state = 'S'; $r = ''; $p = ''; $len_str = strlen($string); $len_x = strlen($str1); $len_y = strlen($str2); for($i=0;$i<$len_str;$i++){ switch($state){ case 'S': //try to find first string if($string[$i] == $str1[$x]){ $state = 'P'; //possibly the start $x++; } break; case 'P': if($string[$i] == $str1[$x]){ if($x == ($len_x -1)){ $state = 'R'; //found the first string switch to result } else $x++; //keep looking } else{ $state = 'S'; // bummer .. back to search for first string again $x = 0; } break; case 'R': if($string[$i] == $str2[$y]){ $state = 'Q'; //quietly confident we have the start of string 2 $y++; $p .= $string[$i]; //save it in a temp var for now } else{ $r .= $string[$i]; // still in result mode $y = 0; } break; case 'Q': if($string[$i] == $str2[$y]){ if($y == ($len_y -1)){ // yippee found the second string return $r; //all done } else{ $p .= $string[$i]; //keep going $y ++; } } else{ $r .= $p; // add temp to result $r .= $string[$i]; // don't forget this one $p = ''; $y = 0; $state = 'R'; // oops back to finding string 2 } break; } } return ''; //didn't find anything } $string = 'I need a function to get a string in between two other strings.'; $str1 = 'function to get'; $str2 = 'two other '; echo "String: '$string' <br>"; echo "Str1: '$str1' <br>"; echo "Str2: '$str2' <br>"; echo "Extracted: '".find_string($string,$str1,$str2)."'<br>"; -- regards, Tom -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php