diff --git a/bin/v-php-func b/bin/v-php-func index f6192c33..f7a73385 100644 --- a/bin/v-php-func +++ b/bin/v-php-func @@ -8,5 +8,14 @@ # Action # #----------------------------------------------------------# + +if [ -p /dev/stdin ]; then + STDIN=$(cat -) + if [ ! -z "$STDIN" ]; then + echo "$STDIN" | php /usr/local/vesta/func/bash-to-php-interpreter.php "$@" + exit $? + fi +fi + php /usr/local/vesta/func/bash-to-php-interpreter.php "$@" exit $? diff --git a/func/bash-to-php-interpreter.php b/func/bash-to-php-interpreter.php index 13995e1c..e780d41c 100644 --- a/func/bash-to-php-interpreter.php +++ b/func/bash-to-php-interpreter.php @@ -7,6 +7,14 @@ else $SHLVL=3; if (!isset($argv)) exit(5); +stream_set_blocking(STDIN, false); +$myvesta_stdin=''; +$myvesta_f = fopen( 'php://stdin', 'r' ); +while( $myvesta_line = fgets( $myvesta_f ) ) { + $myvesta_stdin .= $myvesta_line; +} +fclose( $myvesta_f ); + include ("/usr/local/vesta/func/main.php"); include ("/usr/local/vesta/func/string.php"); diff --git a/func/main.php b/func/main.php index fcc96610..03a501a1 100644 --- a/func/main.php +++ b/func/main.php @@ -71,7 +71,9 @@ function myvesta_fix_args() { } function myvesta_test_func () { + global $myvesta_stdin; $args=func_get_args(); + if ($myvesta_stdin!='') array_splice( $args, 0, 0, array($myvesta_stdin) ); myvesta_echo ("You said: "); myvesta_echo (trim(print_r ($args, true))); } diff --git a/func/string.php b/func/string.php index 2b6a63d9..a38e068e 100644 --- a/func/string.php +++ b/func/string.php @@ -70,8 +70,23 @@ function myvesta_strip_in_file_between_including_borders($file, $left, $right) { // --- string functions --- -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) { - global $myvesta_str_found_at, $myvesta_str_end_at; +function myvesta_str_get_between () { + global $myvesta_stdin, $myvesta_str_found_at, $myvesta_str_end_at; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + $args_i++; $left_substring=$args[$args_i]; + $args_i++; $right_substring=$args[$args_i]; + $args_i++; $start=0; if (!empty($args[$args_i])) $start=intval($args[$args_i]); + $args_i++; $return_left_substring=0; if (!empty($args[$args_i])) $return_left_substring=intval($args[$args_i]); + $args_i++; $return_right_substring=0; if (!empty($args[$args_i])) $return_right_substring=intval($args[$args_i]); + $args_i++; $left_substring_necessary=1; if (!empty($args[$args_i])) $left_substring_necessary=intval($args[$args_i]); + $args_i++; $right_substring_necessary=1; if (!empty($args[$args_i])) $right_substring_necessary=intval($args[$args_i]); + $myvesta_str_found_at=0; $myvesta_str_end_at=0; $from_null=0; @@ -105,7 +120,19 @@ function myvesta_str_get_between (&$text, $left_substring, $right_substring, $st return substr($text, $pos1, $len); } -function myvesta_str_replace_once_between_including_borders(&$text, $left, $right, $replace_with) { +function myvesta_str_replace_once_between_including_borders() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + $args_i++; $left=$args[$args_i]; + $args_i++; $right=$args[$args_i]; + $args_i++; $replace_with=$args[$args_i]; + $pos1=strpos($text, $left); if ($pos1===false) return $text; $pos2=strpos($text, $right, $pos1+strlen($left)); @@ -113,7 +140,18 @@ function myvesta_str_replace_once_between_including_borders(&$text, $left, $righ return substr($text, 0, $pos1).$replace_with.substr($text, $pos2+strlen($right)); } -function myvesta_str_strip_once_between_including_borders(&$text, $left, $right) { +function myvesta_str_strip_once_between_including_borders() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + $args_i++; $left=$args[$args_i]; + $args_i++; $right=$args[$args_i]; + $pos1=strpos($text, $left); if ($pos1===false) return $text; $pos2=strpos($text, $right, $pos1+strlen($left)); @@ -121,7 +159,19 @@ function myvesta_str_strip_once_between_including_borders(&$text, $left, $right) return substr($text, 0, $pos1).substr($text, $pos2+strlen($right)); } -function myvesta_str_replace_between_including_borders($text, $left, $right, $replace_with) { +function myvesta_str_replace_between_including_borders() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + $args_i++; $left=$args[$args_i]; + $args_i++; $right=$args[$args_i]; + $args_i++; $replace_with=$args[$args_i]; + $start=0; $left_len=strlen($left); $right_len=strlen($right); @@ -135,7 +185,18 @@ function myvesta_str_replace_between_including_borders($text, $left, $right, $re return $text; } -function myvesta_str_strip_between_including_borders($text, $left, $right) { +function myvesta_str_strip_between_including_borders() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + $args_i++; $left=$args[$args_i]; + $args_i++; $right=$args[$args_i]; + $left_len=strlen($left); $right_len=strlen($right); while (true) { @@ -147,3 +208,43 @@ function myvesta_str_strip_between_including_borders($text, $left, $right) { } return $text; } + +function myvesta_str_find() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + $args_i++; $find=$args[$args_i]; + + $pos=strpos($text, $find); + if ($pos===false) return myvesta_throw_error (MYVESTA_ERROR_STRING_NOT_FOUND, ""); + return $pos; +} + +function myvesta_str_uppercase() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + return strtoupper($text); +} + +function myvesta_str_lowercase() { + global $myvesta_stdin; + $args=func_get_args(); + $args_i=-1; + if ($myvesta_stdin!='') { + $text=$myvesta_stdin; + } else { + $args_i++; $text=$args[$args_i]; + } + return strtolower($text); +}