我刚刚发布了我编写的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的值,因此如果它不是数字,它将永远不会被循环卡住。

10-07 23:43