我与PHP Simple Dom Parser合作。实际上,我为每个我想要测试的标签创建了一个测试:
if(count($html->find('section')) == 0){
echo '<p class="pstatus bg-danger"><span class="glyphicon glyphicon-remove"></span>Aucune balise sémantique section.</p>';
}
elseif(count($html->find('section')) >= 1){
echo '<p>Nombre de balises sémantiques section: <span>' . count($html->find('section')) . '</span></p>';
}
我尝试创建一个函数来重写我的所有代码以减少行数。我试过这个:
function ftest($balise,$balisetxt){
if(count($html->find('$balise')) == 0){
echo '<p class="pstatus bg-danger"><span class="glyphicon glyphicon-remove"></span>Aucune $balisetxt.</p>';
}
elseif(count($html->find('$balise')) >= 1){
echo '<p>Nombre de $balisetxt: <span>' . count($html->find('section')) . '</span></p>';
}
}
ftest('section', 'balise sémantique section');
但我得到了这些
Notice: Undefined variable: html in E:\xampp\htdocs\testmobile\index.php on line 69
Fatal error: Call to a member function find() on a non-object in E:\xampp\htdocs\testmobile\index.php on line 69
就像PHP无法在函数中从PHP Simple Dom Prser访问$ html-&gt;查找东西。我该怎么办?
答案 0 :(得分:0)
您应该了解有关PHP及其范围的更多信息:http://www.php.net/manual/fr/language.variables.scope.php(法语内容,因为您看起来像法国人)
简而言之,A函数无法访问未定义的变量/未通过参数传递的变量
答案 1 :(得分:0)
$html
在函数中没有范围,要么将其作为参数传递,要么使用global关键字来获取范围。 $html->find('$balise')
也应为$html->find($balise)
。
<?php
/**
* find text, yada..
* @uses $html
* @param string $balise
* @param string $balisetxt
* @return string
*/
function ftest($balise,$balisetxt)
{
global $html;
$return = null;
if(count($html->find($balise)) == 0)
{
$return = '<p class="pstatus bg-danger"><span class="glyphicon glyphicon-remove"></span>Aucune '.htmlentities($balisetxt, ENT_QUOTES, "UTF-8").'.</p>';
} else
if(count($html->find($balise)) >= 1)
{
$return = '<p>Nombre de '.htmlentities($balisetxt, ENT_QUOTES, "UTF-8").': <span>' . count($html->find('section')) . '</span></p>';
}
return $return;
}
ftest('section', 'balise sémantique section');
?>