“Breaking down the borders between
technical stuff and general knowledge.”

Menu

Home
Software
Web Design
Articles
Contact





Make donations with PayPal - it's fast, free and secure!



StrBetweenStrs()

This function is to aide in parsing text files, and has proven useful for dealing with XML. This code is free to use for any purpose. A bit of credit in a readme file or about box would be great, but not necessary. VB and PHP versions are below.

Download

modStrBetweenStrs.bas

Usage

strSource = The original string you wish to parse.

str1 = String that preceeds the value you wish to parse out.

str2 = String that follows the value you wish to parse out.

bCaseSensitive = When true, str1 and str2 must match the case of their values in strSource. This is true by default.

SomeStringArray = StrBetweenStrs("<tag>Woot</tag><tag>Woot again!</tag>", "<tag>", "</tag>")

Debug.Print SomeStringArray(0)  'Returns:  Woot
Debug.Print SomeStringArray(1)  'Returns:  Woot again!

VB Code

Public Function StrBetweenStrs(strSource As String, str1 As String, str2 As String, Optional bCaseSensitive = True) As String()
   Dim pos1 As Long
   Dim pos2 As Long
   Dim results() As String
   Dim whatsleft As String
   Dim count As Integer
   whatsleft = strSource
Do While whatsleft <> "" If bCaseSensitive Then pos1 = InStr(1, whatsleft, str1) pos2 = InStr(pos1 + Len(str1), whatsleft, str2) Else pos1 = InStr(1, UCase(whatsleft), UCase(str1)) pos2 = InStr(pos1 + Len(str1), UCase(whatsleft), UCase(str2)) End If If pos1 = 0 Or pos2 = 0 Then Exit Do End If ReDim Preserve results(count) results(count) = Mid(whatsleft, pos1 + Len(str1), pos2 - (pos1 + Len(str1))) whatsleft = Right(whatsleft, Len(whatsleft) - pos2) count = count + 1 Loop StrBetweenStrs = results
End Function

PHP Code

function strbetweenstrs($strSource, $str1, $str2, $bCaseSensitive) {
$whatsleft=$strSource;
$count=0;
while ($whatsleft<>"") {
if ($bCaseSensitive) {
$pos1=strpos($whatsleft, $str1);
$pos2=strpos($whatsleft, $str2, $pos1+strlen($str1));
} else {
$pos1=strpos(strtoupper($whatsleft), strtoupper($str1));
$pos2=strpos(strtoupper($whatsleft), strtoupper($str2), $pos1+strlen($str1));
}
if (($pos1==0)||($pos2==0)) {
break;
}
$results[$count]=substr($whatsleft, $pos1+strlen($str1), $pos2-($pos1+strlen($str1)));
$whatsleft=substr($whatsleft,$pos2);
$count++;

}
return $results;
}