我刚刚发布了我编写的WordPress插件的第一个版本,我收到了一个报告,其中至少有一个使用我的插件的人收到了一个执行超时错误,引用了以下代码块:
function getNumericAttributeFromHTML($htmlElement, $attribute){
$attrStartPos = stripos($htmlElement, $attribute) + strlen($attribute);
$strOffset = 0;
$searchWithin = substr($htmlElement, $attrStartPos);
while(!(is_numeric($searchWithin[$strOffset]))){
$strOffset++;
}
$attrStartPos += $strOffset;
$strOffset = 0;
$searchWithin = substr($htmlElement, $attrStartPos);
while((is_numeric($searchWithin[$strOffset]))){
$strOffset++;
}
return substr($htmlElement, $attrStartPos, $strOffset);
}
此函数在页面上的每个图像上调用两次。我是不是太没效率了,还是他们的主人太可怕了?
提前感谢您的帮助。
最佳答案
你有一个无限循环。您只需增加while
的值而不更改$strOffset
的值,因此如果它不是数字,它将永远不会被循环卡住。