mirror of
				https://github.com/mashirozx/sakura.git
				synced 2025-05-29 01:49:21 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Sakura\Utils;
 | |
| 
 | |
| use Rogervila\ArrayDiffMultidimensional;
 | |
| 
 | |
| class Tools
 | |
| {
 | |
|   public static function echo_interceptor(callable $callback, ...$args)
 | |
|   {
 | |
|     ob_start();
 | |
|     call_user_func($callback, ...$args);
 | |
|     $output = ob_get_contents();
 | |
|     ob_end_clean();
 | |
|     return $output;
 | |
|   }
 | |
| 
 | |
|   public static function get_text_from_dom($node, $text)
 | |
|   {
 | |
|     if (!is_null($node->childNodes)) {
 | |
|       foreach ($node->childNodes as $node) {
 | |
|         $text = self::get_text_from_dom($node, $text);
 | |
|       }
 | |
|     } else {
 | |
|       return $text . $node->textContent . ' ';
 | |
|     }
 | |
|     return $text;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * https://stackoverflow.com/a/3877494/8083009
 | |
|    *
 | |
|    * @param array $aArray1
 | |
|    * @param array $aArray2
 | |
|    *
 | |
|    * @return array
 | |
|    */
 | |
|   public static function array_recursive_diff(array $aArray1, array  $aArray2)
 | |
|   {
 | |
|     $aReturn = array();
 | |
| 
 | |
|     foreach ($aArray1 as $mKey => $mValue) {
 | |
|       if (array_key_exists($mKey, $aArray2)) {
 | |
|         if (is_array($mValue)) {
 | |
|           $aRecursiveDiff = self::array_recursive_diff($mValue, $aArray2[$mKey]);
 | |
|           if (count($aRecursiveDiff)) {
 | |
|             $aReturn[$mKey] = $aRecursiveDiff;
 | |
|           }
 | |
|         } else {
 | |
|           if ($mValue != $aArray2[$mKey]) {
 | |
|             $aReturn[$mKey] = $mValue;
 | |
|           }
 | |
|         }
 | |
|       } else {
 | |
|         $aReturn[$mKey] = $mValue;
 | |
|       }
 | |
|     }
 | |
|     return $aReturn;
 | |
|   }
 | |
| }
 |