From 8ae36f7df53c174eef34fbf945ca241705b8d715 Mon Sep 17 00:00:00 2001 From: myvesta <38690722+myvesta@users.noreply.github.com> Date: Sat, 11 Mar 2023 14:50:11 +0100 Subject: [PATCH] Update string.php --- func/string.php | 102 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 76 insertions(+), 26 deletions(-) diff --git a/func/string.php b/func/string.php index 111c57eb9..8677af041 100644 --- a/func/string.php +++ b/func/string.php @@ -12,32 +12,82 @@ function myvesta_replace_in_file($find, $replace, $file) { return $r; } -function myvesta_str_get_between (&$text, $left_substring, $right_substring, $start=0, $do_not_return_left_substring=1, $do_not_return_right_substring=1, $left_substring_necessary=1, $right_substring_necessary=1) +function myvesta_str_get_between (&$text, $left_substring, $right_substring, $start=0, $return_left_substring=0, $return_right_substring=0, $left_substring_necessary=1, $right_substring_necessary=1) { - $from_null=0; - $pos1=strpos($text, $left_substring, $start); - if ($pos1===FALSE) - { - if ($left_substring_necessary==1) return ""; - $pos1=$start; - $from_null=1; - } + global $myvesta_str_found_at, $myvesta_str_end_at; + $myvesta_str_found_at=0; + $myvesta_str_end_at=0; + $from_null=0; + $pos1=strpos($text, $left_substring, $start); + if ($pos1===FALSE) + { + if ($left_substring_necessary==1) return ""; + $pos1=$start; + $from_null=1; + } - if ($do_not_return_left_substring==1) - { - if ($from_null==0) $pos1=$pos1+strlen($left_substring); - } - $pos2=strpos($text, $right_substring, $pos1+1); - if ($pos2===FALSE) - { - if ($right_substring_necessary==1) return ""; - $pos2=strlen($text); - } - if ($do_not_return_right_substring==1) $len=$pos2-$pos1; - else $len=($pos2-$pos1)+strlen($right_substring); - - $slen=strlen($text); - if ($pos1+$len>$slen) $len=$slen-$pos1; - - return substr($text, $pos1, $len); + if ($return_left_substring==0) + { + if ($from_null==0) $pos1=$pos1+strlen($left_substring); + } + $pos2=strpos($text, $right_substring, $pos1+1); + if ($pos2===FALSE) + { + if ($right_substring_necessary==1) return ""; + $pos2=strlen($text); + } + if ($return_right_substring==0) $len=$pos2-$pos1; + else $len=($pos2-$pos1)+strlen($right_substring); + + $slen=strlen($text); + if ($pos1+$len>$slen) $len=$slen-$pos1; + + $myvesta_str_found_at=$pos1; + $myvesta_str_end_at=$pos1+$len; + + return substr($text, $pos1, $len); +} + +function myvesta_str_replace_once_between_including_borders(&$text, $left, $right, $replace_with) { + $pos1=strpos($text, $left); + if ($pos1===false) return $text; + $pos2=strpos($text, $right, $left+strlen($left)); + if ($pos2===false) return $text; + return substr($text, 0, $pos1).$replace_with.substr($text, $pos2+strlen($right)); +} + +function myvesta_str_strip_once_between_including_borders(&$text, $left, $right) { + $pos1=strpos($text, $left); + if ($pos1===false) return $text; + $pos2=strpos($text, $right, $left+strlen($left)); + if ($pos2===false) return $text; + return substr($text, 0, $pos1).substr($text, $pos2+strlen($right)); +} + + +function myvesta_str_replace_between_including_borders($text, $left, $right, $replace_with) { + $start=0; + $left_len=strlen($left); + $right_len=strlen($right); + while (true) { + $pos1=strpos($text, $left); + if ($pos1===false) break; + $pos2=strpos($text, $right, $left+$left_len); + if ($pos2===false) break; + $text=substr($text, 0, $pos1).$replace_with.substr($text, $pos2+$right_len); + } + return $text; +} + +function myvesta_str_strip_between_including_borders($text, $left, $right) { + $left_len=strlen($left); + $right_len=strlen($right); + while (true) { + $pos1=strpos($text, $left); + if ($pos1===false) break; + $pos2=strpos($text, $right, $left+$left_len); + if ($pos2===false) break; + $text=substr($text, 0, $pos1).substr($text, $pos2+$right_len); + } + return $text; }