@@ -746,6 +746,11 @@ static ZEND_FUNCTION(zend_test_uri_parser)
746
746
RETURN_THROWS ();
747
747
}
748
748
749
+ php_uri * uri_struct = php_uri_parse_to_struct (parser , ZSTR_VAL (uri_string ), ZSTR_LEN (uri_string ), PHP_URI_COMPONENT_READ_MODE_RAW , false);
750
+ if (uri_struct == NULL ) {
751
+ RETURN_THROWS ();
752
+ }
753
+
749
754
zval value ;
750
755
751
756
array_init (return_value );
@@ -787,7 +792,56 @@ static ZEND_FUNCTION(zend_test_uri_parser)
787
792
php_uri_get_fragment (uri , PHP_URI_COMPONENT_READ_MODE_RAW , & value );
788
793
zend_hash_add (Z_ARR (raw ), ZSTR_KNOWN (ZEND_STR_FRAGMENT ), & value );
789
794
zend_hash_str_add (Z_ARR_P (return_value ), "raw" , strlen ("raw" ), & raw );
795
+ zval from_struct ;
796
+ zval dummy ;
797
+ array_init (& from_struct );
798
+ if (uri_struct -> scheme ) {
799
+ ZVAL_STR_COPY (& dummy , uri_struct -> scheme );
800
+ } else {
801
+ ZVAL_NULL (& dummy );
802
+ }
803
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_SCHEME ), & dummy );
804
+ if (uri_struct -> user ) {
805
+ ZVAL_STR_COPY (& dummy , uri_struct -> user );
806
+ } else {
807
+ ZVAL_NULL (& dummy );
808
+ }
809
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_USERNAME ), & dummy );
810
+ if (uri_struct -> password ) {
811
+ ZVAL_STR_COPY (& dummy , uri_struct -> password );
812
+ } else {
813
+ ZVAL_NULL (& dummy );
814
+ }
815
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_PASSWORD ), & dummy );
816
+ if (uri_struct -> host ) {
817
+ ZVAL_STR_COPY (& dummy , uri_struct -> host );
818
+ } else {
819
+ ZVAL_NULL (& dummy );
820
+ }
821
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_HOST ), & dummy );
822
+ ZVAL_LONG (& dummy , uri_struct -> port );
823
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_PORT ), & dummy );
824
+ if (uri_struct -> path ) {
825
+ ZVAL_STR_COPY (& dummy , uri_struct -> path );
826
+ } else {
827
+ ZVAL_NULL (& dummy );
828
+ }
829
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_PATH ), & dummy );
830
+ if (uri_struct -> query ) {
831
+ ZVAL_STR_COPY (& dummy , uri_struct -> query );
832
+ } else {
833
+ ZVAL_NULL (& dummy );
834
+ }
835
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_QUERY ), & dummy );
836
+ if (uri_struct -> fragment ) {
837
+ ZVAL_STR_COPY (& dummy , uri_struct -> fragment );
838
+ } else {
839
+ ZVAL_NULL (& dummy );
840
+ }
841
+ zend_hash_add (Z_ARR (from_struct ), ZSTR_KNOWN (ZEND_STR_FRAGMENT ), & dummy );
842
+ zend_hash_str_add (Z_ARR_P (return_value ), "struct" , strlen ("struct" ), & from_struct );
790
843
844
+ php_uri_struct_free (uri_struct );
791
845
php_uri_free (uri );
792
846
}
793
847
0 commit comments