对url格式化

/* normalize a file name : also called by robots.txt parser
 * return true if it is ok, false otherwise (cgi-bin)
 */
bool fileNormalize (char *file) {
  int i=0;
  while (file[i] != 0 && file[i] != '#') {
	if (file[i] == '/') {
	  if (file[i+1] == '.' && file[i+2] == '/') {
		// suppress /./
		int j=i+3;
		while (file[j] != 0) {
		  file[j-2] = file[j];
		  j++;
		}
		file[j-2] = 0;
      } else if (file[i+1] == '/') {
        // replace // by /
        int j=i+2;
        while (file[j] != 0) {
          file[j-1] = file[j];
		  j++;
        }
        file[j-1] = 0;
      } else if (file[i+1] == '.' && file[i+2] == '.' && file[i+3] == '/') {
		// suppress /../
		if (i == 0) {
		  // the file name starts with /../ : error
		  return false;
		} else {
		  int j = i+4, dec;
		  i--;
		  while (file[i] != '/') { i--; }
		  dec = i+1-j; // dec < 0
		  while (file[j] != 0) {
			file[j+dec] = file[j];
			j++;
		  }
		  file[j+dec] = 0;
		}
	  } else if (file[i+1] == '.' && file[i+2] == 0) {
		// suppress /.
        file[i+1] = 0;
        return true;
	  } else if (file[i+1] == '.' && file[i+2] == '.' && file[i+3] == 0) {
		// suppress /..
		if (i == 0) {
          // the file name starts with /.. : error
		  return false;
		} else {
		  i--;
		  while (file[i] != '/') {
			i--;
		  }
          file[i+1] = 0;
          return true;
		}
	  } else { // nothing special, go forward
		i++;
	  }
	} else if (file[i] == '%') {
      int v1 = int_of_hexa(file[i+1]);
      int v2 = int_of_hexa(file[i+2]);
      if (v1 < 0 || v2 < 0) return false;
      char c = 16 * v1 + v2;
      if (isgraph(c)) {
        file[i] = c;
        int j = i+3;
        while (file[j] != 0) {
          file[j-2] = file[j];
          j++;
        }
        file[j-2] = 0;
        i++;s
      } else if (c == ' ' || c == '/') { // keep it with the % notation
        i += 3;
      } else { // bad url
        return false;
      }
    } else { // nothing special, go forward
	  i++;
	}
  }
  file[i] = 0;
  return true;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
格式化一个链接并将其复制到剪贴板。 ##为什么需要它?立即格式化活动标签的链接,以Markdown,reST,HTML,Text,Textile或其他格式使用 ##使用方法可以使用键盘快捷键,上下文菜单或“格式链接”扩展名的工具栏按钮复制指定格式的链接。在此之前,您可以选择选择一些可能包含链接或不包含链接的文本 ###键盘快捷方式“以默认格式复制链接”的键盘快捷方式是单击工具栏按钮的快捷方式。链接将以默认格式复制,弹出窗口显示在工具栏按钮下。另外,还有使用快捷方式以相应格式复制链接的快捷方式,而与默认格式无关。您可以在chrome:// extensions / shortcuts ###上下文菜单中更改快捷方式。打开上下文菜单,然后选择“将链接格式设置为XXX”。通过在工具栏按钮的弹出页面中单击“设置为默认”按钮来更改默认格式,菜单项标签中的“ XXX”也会更改。如果在选项页面中选中“创建子菜单”并保存选项,则将在“格式链接”上下文菜单组下创建每种格式的子菜单 ###工具栏按钮按下“格式链接”的工具栏按钮时,链接将以默认格式复制,弹出页面打开,并且格式化的文本显示在文本区域中。如果要以其他格式复制链接,可以按单选按钮之一。同样,如果要更改默认格式,则可以按“设置为默认”按钮 ##灵活设置您可以在[格式链接]扩展名的[工具]-> [扩展名]-> Clik“选项”链接中修改格式。在格式设置中,您可以使用迷你模板语言 * {{variable}} *变量= title / url / text *变量`title`的值是HTML页面标题 *如果选择了某些文本,则变量text的值是所选文本;如果通过链接打开上下文菜单,则为链接文本(有关链接文本,请参见下面的“已知限制”);如果未选择文本,则为页面URL;您可以通过链接打开上下文菜单 *如果您通过链接打开上下文菜单,则变量“ url”的值为链接,如果选择包含链接,则为第一个链接,否则为HTML页面URL *变量名和花括号之间不允许有空格 * {{{variable.s(“ foo”,“ bar”)}} * *表示`variable.replace(new RegExp(“ foo”,'g'),“ bar”)`*您可以在字符串 *您必须对string和regexp的第一个参数进行转义。例如,`.s(“ \\ [”,“ \\ [”)`表示将`\ [`替换为`\\ [`*您可以链接多个.s(“ foo”,“ bar”)*您可以在字符串中使用转义符\。例如,您需要使用\来对\进行转义,例如\\`,也需要使用\\来对{{进行转义,例如\\`。请参阅下面的LaTeX示例 *其他字符视为文字字符串。以下是示例:* Markdown```[{{text.s(“ \\ [”,“ \\ [”)。s(“ \\]”,“ \\]”)}}] {{ .s(“ \\)”,“%29”)}}})```* reST```{{text}}`_```* HTML```<a>{{text.s(“``` *文本```{{text}} \ n {{url}}```* Redmine Texitile```“ {{title.s(” \“”,“”“)。s(” \\ [“ ,“ [”)}}“:{{url}}```* LaTeX```\\ href \ {{{url}} \} \ {{{text}} \}```## License MIT许可证。源代码托管在[Github](https://github.com/hnakamur/FormatLink-Chrome)##已知限制*由于安全原因,您无法在某些页面(例如Chrome Extension Extension Gallary)上复制URL。当您将鼠标指向某个链接后,使用上下文菜单复制该链接时,由于[chrome.contextMenus API](https: //developer.chrome.com/extensions/contextMenus)。因此,如果存在多个相同URL的链接,并且您指向非第一个链接,则文本不是您想要的,但这是我们能做到的最好马上开始* Chrome al降低每个扩展名最多具有4个键盘快捷键。一个快捷方式用于复制具有默认格式的链接,其余三个快捷方式用于将具有相应格式1的链接复制到格式3,因此格式4到格式9没有键盘快捷键。</a> 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值