Gracias iovan pero el problema estaba en la forma que estructure el array
use ( en vez de [
Por aquello aqui les dejo el codigo corregido:
Archivo XML rules.xml
Código HTML:
<?xml version="1.0" encoding="utf-8"?>
<rules>
<rule category="tag" valid="FALSE">
<tagname>p</tagname>
<msg>Uso ino debido de la etiqueta P</msg>
</rule>
<rule category="attrib" valid="FALSE">
<tagname>a</tagname>
<attibute>title</attibute>
<msg>Falta atributo title en las etiquetas a</msg>
</rule>
</rules>
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." ".$rule->msg."<br/>");
}
}
else
{
if ($rule['category']=='attrib')
{
$val=attrbibuteExitsInTag($rule->tagname,$rule->attibute,$html);
for ($i = 0; $i < count($val); $i++)
{
if ($val[$i] == $rule['valid'])
{
echo("Uso de la Etiqueta ".$rule->tagname." ".$rule->msg."<br/>");
}
}
}
}
}
?>
Archivo PHP func.php
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);
if ($tag->hasAttribute($attribute))
{
$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);
if (($tags->length) > 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
?>