xdebug名称参数%R的替换规则

时间:2017-12-13 09:58:18

标签: xdebug

在输出名称配置中用于xdebug.trace_output_name参数的URI上应用了哪些替换规则? whatever item(参数:trace._test_xdebug_test_php_var=1_var2=2.xt)仅提供一个示例,可以通过不同方式进行解释:

/test/xdebug_test.php?var=1&var2=2

可以是

/test_xdebug/test.php?var=1&var2=2

/test/xdebug/test.php?var=1&var2=2

dt=0.1

(如何)我可以从xdebug转储名称重新创建uri吗?

2 个答案:

答案 0 :(得分:0)

我浏览了xdebug source code并找到了替换字符的函数:

if (data) {
   strval = estrdup(Z_STRVAL_P(data));
   /* replace slashes, dots, question marks, plus
    * signs, ampersands, spaces and other evil chars
    * with underscores */
   while ((char_ptr = strpbrk(strval, "/\\.?&+:*\"<>| ")) != NULL) {
         char_ptr[0] = '_';
   }
   xdebug_str_add(&fname, strval, 0);                                                                                
   efree(strval);
}

<强> TL; DR: /\.?&+:*"<>|

作为副节点,同时使用apache试验字符列​​表:

  • 空格编码为%20,因此不会被_
  • 取代
  • &LT;,&GT;编码为%3C%3E,因此不会被_
  • 取代
  • "编码为%22,因此不会被_
  • 取代

答案 1 :(得分:0)

您无法从生成的文件名返回到完整的网址,因为信息会丢失,因为某些字符基本上已被std::vector<Cell> cells; 替换,因为您已在评论中添加了<。 / p>