将一些经典的ASP(vbScript)翻译成PHP

将一些经典的ASP(vbScript)翻译成PHP,php,vbscript,asp-classic,code-translation,Php,Vbscript,Asp Classic,Code Translation,我正在尝试将一块经典的ASP(vbScript)翻译成PHP。我做了一个诚实的尝试,但我的翻译似乎不正确。有人能帮我吗 首先,vbScript代码: szTemp = Request.ServerVariables("URL") aryCrumbs = Split(szTemp,"/") iMax = Ubound(aryCrumbs) szCrumbPath = "http://" & Request.ServerVariables("SERVER_NAME") szTemp = "

我正在尝试将一块经典的ASP(vbScript)翻译成PHP。我做了一个诚实的尝试,但我的翻译似乎不正确。有人能帮我吗

首先,vbScript代码:

szTemp = Request.ServerVariables("URL")
aryCrumbs = Split(szTemp,"/")
iMax = Ubound(aryCrumbs)

szCrumbPath = "http://" & Request.ServerVariables("SERVER_NAME")
szTemp = "<a href=""" & szCrumbPath & """ style=""color:#600;"">Home</a>"

For i = 0 To iMax -2
szCrumbPath = szCrumbPath & "/" & aryCrumbs(i)
szTemp = szTemp & "  &gt; <a href=""" & szCrumbPath & """ style=""color:#600;"">" & CleanUp(aryCrumbs(i)) & "</a>"    'Note: The &gt; in this line refers to a server request variable. 
Next

GetCrumbsArticleCategoryLevel = szTemp & "<span style=""color:#600;"">  &gt; " & CleanUp(aryCrumbs(i)) & "</span>"
szTemp=Request.ServerVariables(“URL”)
ARYCREAMS=分割(szTemp,“/”)
iMax=Ubound(ARY碎屑)
szCrumbPath=“http://”和Request.ServerVariables(“服务器名称”)
szTemp=“”
对于i=0到iMax-2
szCrumbPath=szCrumbPath&“/”和aryCrumbs(i)
szTemp=szTemp&''注意:此行中的表示服务器请求变量。
下一个
getcrumpsarticlecategorylevel=szTemp&“清理(aryCrumbs(i))&”
下面是我将其翻译成PHP的尝试:

$szTemp = $_SERVER["PATH_INFO"];    // Get current URL path (doesn't include www)
$aryCrumbs = explode("/",$szTemp);  // Split path name by slashes into an array
$iMax = count($aryCrumbs);          // Count array.
$szCrumbPath = "http://". $_SERVER["HTTP_HOST"];      // Add on http to web server name
$szTemp = '<a href="' . $szCrumbPath . '" style=&quot;color:#600;&quot;>Home</a>'; 

for ($i=0; $i<=($iMax-2); $i++) {

$szCrumbPath = $szCrumbPath . "/" . $aryCrumbs[$i];
$szTemp = $szTemp ." &gt; <a href=&quot;" . $szCrumbPath . "&quot; style=&quot;color:#600;&quot;". ">" . CleanUp($aryCrumbs[$i]) . "</a>";
}

$GetCrumbsArticleCategoryLevel = $szTemp."<span style=&quot;color:#600;&quot;>&gt; ".CleanUp($aryCrumbs[$i])."</span>";
$szTemp=$\u服务器[“路径信息”];//获取当前URL路径(不包括www)
$aryCrumbs=爆炸(“/”,$szTemp);//通过斜杠将路径名拆分为数组
$iMax=计数($aryCrumbs);//计数数组。
$szCrumbPath=“http://”$_服务器[“HTTP_主机”];//将http添加到web服务器名称
$szTemp='';
对于PHP中的($i=0;$i),为了得到一个“您需要用\来分隔它,所以”变成\”

示例:

$szTemp = "<a href=\"" . $szCrumbPath . "\" style=\"color: #600\">Home</a>";
$szTemp=”“;
翻译

我假设您使用的是Request.ServerVariables(“gt”),在PHP中,等效元素是$\u SERVER,否则对于Request.Form,使用$\u POST或$\u GET来表示Request.QueryString

确保用户可以使用htmlspecialchars()函数更改html编码的值,否则会导致跨站点脚本攻击[XSS]

$szTemp = $_SERVER['REQUEST_URI'];
$aryCrumbs = explode("/", $szTemp);
$iMax = count($aryCrumbs);

$szCrumbPath = "http://". $_SERVER["HTTP_HOST"];
$szTemp = "<a href=\"" . $szCrumbPath . "\" style=\"color: #600\">Home</a>";

for ($i=0; $i <= ($iMax - 2); $i++) {
    $szCrumbPath = $szCrumbPath . "/" . $aryCrumbs[$i];
    $szTemp = $szTemp . " &gt; <a href=\"" . $szCrumbPath . "\" style=\"color: #600;\">" . CleanUp($aryCrumbs[$i]) . "</a>"; //The htmlspecialchars prevents a XSS attack
}
$GetCrumbsArticleCategoryLevel = $szTemp . "<span style=\"color:#600\"> &gt; " . CleanUp($aryCrumbs[$i]) . "</span>";
$szTemp=$\u服务器['REQUEST\u URI'];
$aryCrumbs=爆炸(“/”,$szTemp);
$iMax=计数($s);
$szCrumbPath=“http://”$\u服务器[“http\u主机”];
$szTemp=“”;

对于($i=0;$i澄清:在VBScript代码中,有两行代码中有一个。据我所知,这是一个服务器端变量,可能是用户在URL中作为导航请求的一部分返回的。将是一个HTML实体,而不是CGI变量。按原样将其放入PHP字符串中。同样,您不需要对双引号进行实体编码如果它应该返回一个实际的>字符,那么它需要按照W3C规范对其进行HTML编码。您是对的:代码应该返回一个实际的>字符。这是我关于Get语句的错误。我会调整它。