source: branches/version-2_5-dev/data/module/Compat/Compat/Function/php_strip_whitespace.php @ 20119

Revision 20119, 3.0 KB checked in by nanasess, 13 years ago (diff)

module 以下は svn:keywords を除外

  • Property svn:eol-style set to LF
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2// +----------------------------------------------------------------------+
3// | PHP Version 4                                                        |
4// +----------------------------------------------------------------------+
5// | Copyright (c) 1997-2004 The PHP Group                                |
6// +----------------------------------------------------------------------+
7// | This source file is subject to version 3.0 of the PHP license,       |
8// | that is bundled with this package in the file LICENSE, and is        |
9// | available at through the world-wide-web at                           |
10// | http://www.php.net/license/3_0.txt.                                  |
11// | If you did not receive a copy of the PHP license and are unable to   |
12// | obtain it through the world-wide-web, please send a note to          |
13// | license@php.net so we can mail you a copy immediately.               |
14// +----------------------------------------------------------------------+
15// | Authors: Aidan Lister <aidan@php.net>                                |
16// +----------------------------------------------------------------------+
17//
18// $Id: php_strip_whitespace.php,v 1.10 2005/01/26 04:55:13 aidan Exp $
19
20
21/**
22 * Replace php_strip_whitespace()
23 *
24 * @category    PHP
25 * @package     PHP_Compat
26 * @link        http://php.net/function.php_strip_whitespace
27 * @author      Aidan Lister <aidan@php.net>
28 * @version     $Revision: 1.10 $
29 * @since       PHP 5
30 * @require     PHP 4.0.0 (user_error) + Tokenizer extension
31 */
32if (!function_exists('php_strip_whitespace')) {
33    function php_strip_whitespace($file)
34    {
35        // Sanity check
36        if (!is_scalar($file)) {
37            user_error('php_strip_whitespace() expects parameter 1 to be string, ' .
38                gettype($file) . ' given', E_USER_WARNING);
39            return;
40        }
41
42        // Load file / tokens
43        $source = implode('', file($file));
44        $tokens = token_get_all($source);
45
46        // Init
47        $source = '';
48        $was_ws = false;
49
50        // Process
51        foreach ($tokens as $token) {
52            if (is_string($token)) {
53                // Single character tokens
54                $source .= $token;
55            } else {
56                list($id, $text) = $token;
57               
58                switch ($id) {
59                    // Skip all comments
60                    case T_COMMENT:
61                    case T_ML_COMMENT:
62                    case T_DOC_COMMENT:
63                        break;
64
65                    // Remove whitespace
66                    case T_WHITESPACE:
67                        // We don't want more than one whitespace in a row replaced
68                        if ($was_ws !== true) {
69                            $source .= ' ';
70                        }
71                        $was_ws = true;
72                        break;
73
74                    default:
75                        $was_ws = false;
76                        $source .= $text;
77                        break;
78                }
79            }
80        }
81
82        return $source;
83    }
84}
85
86?>
Note: See TracBrowser for help on using the repository browser.