@@ -128,17 +128,17 @@ private static function getStatements(string $query, string $dbType, string $del
128128 $ stringChar = null ;
129129 continue ;
130130 }
131- if (strtolower ($ char ) == 'd ' && $ isInComment == false && $ isInString == false ) {
131+ if (mb_strtolower ($ char ) == 'd ' && $ isInComment == false && $ isInString == false ) {
132132 $ delimiterResult = self ::getDelimiter ($ index , $ query , $ dbType );
133133 if ($ delimiterResult != null ) {
134134 // it's delimiter
135135 list ($ delimiterSymbol , $ delimiterEndIndex ) = $ delimiterResult ;
136- $ query = substr ($ query , $ delimiterEndIndex );
136+ $ query = mb_substr ($ query , $ delimiterEndIndex );
137137 return self ::getStatements ($ query , $ dbType , $ delimiterSymbol );
138138 }
139139 }
140140 if ($ char == "$ " && $ isInComment == false && $ isInString == false ) {
141- $ queryUntilTagSymbol = substr ($ query , $ index );
141+ $ queryUntilTagSymbol = mb_substr ($ query , $ index );
142142 if ($ isInTag == false ) {
143143 $ tagSymbolResult = self ::getTag ($ queryUntilTagSymbol , $ dbType );
144144 if ($ tagSymbolResult != null ) {
@@ -156,13 +156,13 @@ private static function getStatements(string $query, string $dbType, string $del
156156 }
157157 }
158158 }
159- if (strlen ($ delimiter ) > 1 && array_key_exists ($ index + strlen ($ delimiter ) - 1 , $ charArray )) {
160- for ($ i = $ index + 1 ; $ i < $ index + strlen ($ delimiter ); $ i ++) {
159+ if (mb_strlen ($ delimiter ) > 1 && array_key_exists ($ index + mb_strlen ($ delimiter ) - 1 , $ charArray )) {
160+ for ($ i = $ index + 1 ; $ i < $ index + mb_strlen ($ delimiter ); $ i ++) {
161161 $ char .= $ charArray [$ i ];
162162 }
163163 }
164164 // it's a query, continue until you get delimiter hit
165- if (strtolower ($ char ) == strtolower ($ delimiter ) && $ isInString == false && $ isInComment == false && $ isInTag == false ) {
165+ if (mb_strtolower ($ char ) == mb_strtolower ($ delimiter ) && $ isInString == false && $ isInComment == false && $ isInTag == false ) {
166166 if (! self ::isGoDelimiter ($ dbType , $ query , $ index )) {
167167 continue ;
168168 }
@@ -188,8 +188,8 @@ private static function getStatements(string $query, string $dbType, string $del
188188 */
189189 private static function getQueryParts (string $ query , int $ splittingIndex , string $ delimiter )
190190 {
191- $ statement = substr ($ query , 0 , $ splittingIndex );
192- $ restOfQuery = substr ($ query , $ splittingIndex + strlen ($ delimiter ));
191+ $ statement = mb_substr ($ query , 0 , $ splittingIndex );
192+ $ restOfQuery = mb_substr ($ query , $ splittingIndex + mb_strlen ($ delimiter ));
193193 if ($ statement != null ) {
194194 $ statement = trim ($ statement );
195195 }
@@ -207,23 +207,23 @@ private static function getDelimiter(int $index, string $query, string $dbType)
207207 {
208208 if ($ dbType == self ::DB_MYSQL ) {
209209 $ delimiterKeyword = 'delimiter ' ;
210- $ delimiterLength = strlen ($ delimiterKeyword );
211- $ parsedQueryAfterIndexOriginal = substr ($ query , $ index );
212- $ indexOfDelimiterKeyword = strpos (strtolower ($ parsedQueryAfterIndexOriginal ), $ delimiterKeyword );
210+ $ delimiterLength = mb_strlen ($ delimiterKeyword );
211+ $ parsedQueryAfterIndexOriginal = mb_substr ($ query , $ index );
212+ $ indexOfDelimiterKeyword = mb_strpos (strtolower ($ parsedQueryAfterIndexOriginal ), $ delimiterKeyword );
213213 if ($ indexOfDelimiterKeyword === 0 ) {
214- $ parsedQueryAfterIndex = substr ($ query , $ index );
215- $ indexOfNewLine = strpos ($ parsedQueryAfterIndex , "\n" );
214+ $ parsedQueryAfterIndex = mb_substr ($ query , $ index );
215+ $ indexOfNewLine = mb_strpos ($ parsedQueryAfterIndex , "\n" );
216216 if ($ indexOfNewLine == -1 ) {
217- $ indexOfNewLine = strlen ($ query );
217+ $ indexOfNewLine = mb_strlen ($ query );
218218 }
219- $ parsedQueryAfterIndex = substr ($ parsedQueryAfterIndex , 0 , $ indexOfNewLine );
220- $ parsedQueryAfterIndex = substr ($ parsedQueryAfterIndex , $ delimiterLength );
219+ $ parsedQueryAfterIndex = mb_substr ($ parsedQueryAfterIndex , 0 , $ indexOfNewLine );
220+ $ parsedQueryAfterIndex = mb_substr ($ parsedQueryAfterIndex , $ delimiterLength );
221221 $ delimiterSymbol = trim ($ parsedQueryAfterIndex );
222222 $ delimiterSymbol = self ::clearTextUntilComment ($ delimiterSymbol , $ dbType );
223223 if ($ delimiterSymbol != null ) {
224224 $ delimiterSymbol = trim ($ delimiterSymbol );
225- $ delimiterSymbolEndIndex = strpos ($ parsedQueryAfterIndexOriginal ,
226- $ delimiterSymbol ) + $ index + strlen ($ delimiterSymbol );
225+ $ delimiterSymbolEndIndex = mb_strpos ($ parsedQueryAfterIndexOriginal ,
226+ $ delimiterSymbol ) + $ index + mb_strlen ($ delimiterSymbol );
227227
228228 return [$ delimiterSymbol , $ delimiterSymbolEndIndex ];
229229 }
@@ -244,7 +244,7 @@ private static function getTag(string $query, string $dbType)
244244 if ($ dbType == self ::DB_PGSQL ) {
245245 if (preg_match ('/^(\$[a-zA-Z]*\$)/i ' , $ query , $ matches ) === 1 ) {
246246 $ tagSymbol = trim ($ matches [0 ]);
247- $ indexOfCmd = strpos ($ query , $ tagSymbol );
247+ $ indexOfCmd = mb_strpos ($ query , $ tagSymbol );
248248
249249 return [$ tagSymbol , $ indexOfCmd ];
250250 }
0 commit comments