c语言中编制一个delspace程序删除一个字符串中所有的空格,从代码文件中删除所有空格的最简单方法是什么?...

这是一个PHP函数,将做的工作适合你:

function compress_php_src($src) {

// Whitespaces left and right from this signs can be ignored

static $IW = array(

T_CONCAT_EQUAL, // .=

T_DOUBLE_ARROW, // =>

T_BOOLEAN_AND, // &&

T_BOOLEAN_OR, // ||

T_IS_EQUAL, // ==

T_IS_NOT_EQUAL, // != or <>

T_IS_SMALLER_OR_EQUAL, // <=

T_IS_GREATER_OR_EQUAL, // >=

T_INC, // ++

T_DEC, // --

T_PLUS_EQUAL, // +=

T_MINUS_EQUAL, // -=

T_MUL_EQUAL, // *=

T_DIV_EQUAL, // /=

T_IS_IDENTICAL, // ===

T_IS_NOT_IDENTICAL, // !==

T_DOUBLE_COLON, // ::

T_PAAMAYIM_NEKUDOTAYIM, // ::

T_OBJECT_OPERATOR, // ->

T_DOLLAR_OPEN_CURLY_BRACES, // ${

T_AND_EQUAL, // &=

T_MOD_EQUAL, // %=

T_XOR_EQUAL, // ^=

T_OR_EQUAL, // |=

T_SL, // <<

T_SR, // >>

T_SL_EQUAL, // <<=

T_SR_EQUAL, // >>=

);

if(is_file($src)) {

if(!$src = file_get_contents($src)) {

return false;

}

}

$tokens = token_get_all($src);

$new = "";

$c = sizeof($tokens);

$iw = false; // Ignore whitespace

$ih = false; // In HEREDOC

$ls = ""; // Last sign

$ot = null; // Open tag

for($i = 0; $i < $c; $i++) {

$token = $tokens[$i];

if(is_array($token)) {

list($tn, $ts) = $token; // tokens: number, string, line

$tname = token_name($tn);

if($tn == T_INLINE_HTML) {

$new .= $ts;

$iw = false;

}

else {

if($tn == T_OPEN_TAG) {

if(strpos($ts, " ") || strpos($ts, "\n") || strpos($ts, "\t") || strpos($ts, "\r")) {

$ts = rtrim($ts);

}

$ts .= " ";

$new .= $ts;

$ot = T_OPEN_TAG;

$iw = true;

} elseif($tn == T_OPEN_TAG_WITH_ECHO) {

$new .= $ts;

$ot = T_OPEN_TAG_WITH_ECHO;

$iw = true;

} elseif($tn == T_CLOSE_TAG) {

if($ot == T_OPEN_TAG_WITH_ECHO) {

$new = rtrim($new, "; ");

} else {

$ts = " ".$ts;

}

$new .= $ts;

$ot = null;

$iw = false;

} elseif(in_array($tn, $IW)) {

$new .= $ts;

$iw = true;

} elseif($tn == T_CONSTANT_ENCAPSED_STRING

|| $tn == T_ENCAPSED_AND_WHITESPACE)

{

if($ts[0] == '"') {

$ts = addcslashes($ts, "\n\t\r");

}

$new .= $ts;

$iw = true;

} elseif($tn == T_WHITESPACE) {

$nt = @$tokens[$i+1];

if(!$iw && (!is_string($nt) || $nt == '$') && !in_array($nt[0], $IW)) {

$new .= " ";

}

$iw = false;

} elseif($tn == T_START_HEREDOC) {

$new .= "<<

$iw = false;

$ih = true; // in HEREDOC

} elseif($tn == T_END_HEREDOC) {

$new .= "S;";

$iw = true;

$ih = false; // in HEREDOC

for($j = $i+1; $j < $c; $j++) {

if(is_string($tokens[$j]) && $tokens[$j] == ";") {

$i = $j;

break;

} else if($tokens[$j][0] == T_CLOSE_TAG) {

break;

}

}

} elseif($tn == T_COMMENT || $tn == T_DOC_COMMENT) {

$iw = true;

} else {

if(!$ih) {

$ts = strtolower($ts);

}

$new .= $ts;

$iw = false;

}

}

$ls = "";

}

else {

if(($token != ";" && $token != ":") || $ls != $token) {

$new .= $token;

$ls = $token;

}

$iw = true;

}

}

return $new;

}

// This is an example

$src = file_get_contents('foobar.php');

file_put_contents('foobar3.php',compress_php_src($src));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值