2012-07-20 51 views
0

我想运行我在http://www.getrank.org/pagerank-script/上找到的pagerank脚本。但是当我尝试它时收到一条错误消息。下面的错误消息。这是正确的PHP循环?

这是一个合法的php代码?

... 
function _strord($string){ 
for($i=0;$i $result[$i] = ord($string{$i}); 
return $result; 
} 
... 

我在for语句开始的那一行出现这个错误。

Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in /home/Desktop/test/pagerank-checker.php on line 73 

谢谢。

+1

没有,它抛出一个语法错误 – ajreal 2012-07-20 14:14:34

+1

它甚至没有远程正确。 – Alnitak 2012-07-20 14:14:45

+1

自从你停止相信翻译? – madfriend 2012-07-20 14:15:53

回答

2

如果你看一下源代码是怎么写的那页,你会看到

function _strord($string){<br> 
    for($i=0;$i<strlen($string);$i++)<br> 
     $result[$i] = ord($string{$i});<br> 
    return $result;<br> 
}<br> 

的代码没有经过正确转义,所以浏览器将开始<strlen作为HTML标签的开始文本,错过了一些重要的代码...

没有标记记载:

function _strord($string){ 
    for($i=0;$i<strlen($string);$i++) 
     $result[$i] = ord($string{$i}); 
    return $result; 
} 

编辑一个更清洁的实现是这样的:

function _strord($string) { 
    return array_map('ord', str_split($string, 1)); 
} 
+0

谢谢。你发现它是正确的。我应该已经意识到了。这是一个很好的教训。如果网页包含html代码,请始终检查源代码。 – Thupten 2012-07-20 14:28:52

0
function _strord($string){ 
    $result = ""; 
    for($i=0;$i < strlen($string), $i++) 
     $result[$i] = ord($string[$i]); 
    return $result; 
} 
3

你需要一个比较和增量:

function _strord($string) { 
    $result = array(); 
    for($i = 0, $len = strlen($string); $i < $len; $result[$i] = ord($string[$i]), $i++); 
    return $result; 
} 

我还优化了它的号召省略到strlen()反复循环中。

1

不知道你到底去那里,但功能应该是这个样子:

function _strord ($string) { 

    for($i=0; $i<strlen($string); $i++) { 
    $result[$i] = ord($string[$i]); 
    } 

    return $result; 
}