我会给你要点的。
我正在尝试使用第三方 HTML 标签剥离器抓取某些 URL ,因为我认为默认的 strip_tags() 不能很好地完成这项工作。(我认为你不需要检查那个刮板)
现在有时,某些网站的 HTML 源代码包含一些奇怪的代码,导致我的 HTML 标签剥离器失败。
一个这样的例子是这个包含以下代码的站点:
<li><a href="<//?=$cnf['website']?>girls/models-photo-gallery/?sType=6#top_menu">Photo Galleries</a></li>
这导致上述标签剥离器抛出此错误:
解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,期望/var/www/GET Tweets/htdocs/tmhOAuth-master/examples/class.html2text.inc(429)中的 T_STRING 或 T_VARIABLE 或 T_NUM_STRING :第1行的正则表达式代码
致命错误:preg_replace () [<a href='function.preg-replace'>function.preg-replace</a>]:评估代码失败:$this->_build_link_list("<//?=$cnf[\' website\']?>girls/models-photo-gallery/?sType=6#top_menu", "Photo Gallery") 在/var/www/GET Tweets/htdocs/tmhOAuth-master/examples/class.html2text。公司上线 429
现在发生的情况是,有许多 URL 数组,其中一些会抛出上述错误。我对每个 URL 进行一些处理。
如果数组中的某个 URL 抛出这样的错误,我希望执行继续处理下一个 URL,而不会干扰任何东西。我的代码是这样的:
foreach ($results as $result)
{
$url=$result->Url;
$worddict2=myfunc($url,$worddict2,$history,$n_gram);
}
这里 myfunc 进行处理并使用我之前提到的第 3 方 HTML 剥离器。我尝试将代码修改为:
foreach ($results as $result)
{
$url=$result->Url;
$worddicttemp=array();
try
{
$worddicttemp=myfunc($url,$worddict2,$history,$n_gram); //returns the string represenation of what matters, hopefully
//The below line will be executed only when the above function doesn't throw a fatal error
$worddict2=$worddicttemp;
}
catch(Exception $e)
{
continue;
}
}
但我仍然遇到同样的错误。怎么了?为什么 myfunc() 中的代码现在一旦遇到致命错误就会将控制权转移到 catch 块?