Estoy desarrollando un validador personalizado de tag y atributos html. Leyendo las reglas por medio de un xml pero me esta dando un error:
Fatal error: Can't use function return value in write context in func.php on line 15
Y no lo he podido solucionar alguien tiene alguna idea de como solucionarlo o alguna luz para poder solucionarlo.
Aqui les dejo los codigos de los files que utilizo:
Archivo Php parser.php
Código PHP:
<?
include_once('inc/func.php');
$htmlUrl = "data/email.html";
$html = file_get_contents($htmlUrl);
$xmlUrl = "data/rules.xml";
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
foreach ($xmlObj->rule as $rule)
{
if ($rule['category']=='tag')
{
if (tagExitsInTag($rule->tagname,$html) == $rule['valid'])
{
echo("Uso de la Etiqueta ".$rule->tagname." Es invalido");
}
}
}
?>
Código HTML:
<?xml version="1.0" encoding="utf-8"?> <rules> <rule category="tag" valid="FALSE"> <tagname>p</tagname> <msg>invalid tag</msg> </rule> <rule category="attrib" valid="FALSE"> <tagname>a</tagname> <attibute>title</attibute> <msg>invalid attribute</msg> </rule> </rules>
Código PHP:
<?php
//funcion para saber si existe un atributo dentro de un tag
function attrbibuteExitsInTag($eti,$attribute,$html)
{
@$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags = $xpath->evaluate("/html/body//".$eti);
for ($i = 0; $i < $tags->length; $i++)
{
$tag = $tags->item($i);
$r=$tag->hasAttribute($attribute);
if ($r== TRUE)
{
$items($i)= FALSE;
}
else
{
$items($i)=TRUE;
}
}
return $items;
}
//funcion para saber si existe un Tag de terminado
function tagExitsInTag($eti,$html)
{
@$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags = $xpath->evaluate("/html/body//".$eti);
$tags->length;
$tag = $tags->item(0);
$v=empty($tag);
if ($v==TRUE)
{
return true;
}
else
{
return FALSE;
}
}
?>