Explode in PHP returns Undefined offset: 1

5
function extrai($string) {
    $peca1 = explode('id="', $string);
    $peca2 = explode('">', $peca1[1]);

    return $peca2[0];
}

The string is this:

< ul class="artigo" id="artigo1">
 < li>
   < p>Art. 1º  Salvo disposição contrária, a lei começa a vigorar em todo o país quarenta e cinco dias depois de oficialmente publicada.< /p>
  < /li>
< /ul>

Reports the error Undefined offset: 1 in the peca2 line in the function. Does anyone know why?

    
asked by anonymous 29.04.2015 / 05:43

1 answer

5

You are trying to access a value whose index is not available in array . The example you posted is functional:

function extrai($string) {
    $peca1 = explode('id="', $string);
    $peca2 = explode('">', $peca1[1]);
    return $peca2[0];
}

$string = '< ul class="artigo" id="artigo1">
 < li>
 < p>Art. 1º  Salvo disposição contrária, a lei começa a vigorar em todo o país quarenta e cinco dias depois de oficialmente publicada.< /p>
 < /li>
 < /ul>';

echo extrai($string); // artigo1

DEMO

Another mode using preg_match function:

function obterID($string) {
    $res = preg_match('~class="artigo" id="([\w]+)"~i', $string, $IDs);
    if ($res)
        return $IDs[1];
    else
        return "";  
}

And to use in your code:

// $documento = file_get_contents($arquivo);
$linhasExpl = explode("<ul", $documento);
$linhas = "";
$postId = 100;

$titulo = "TÍTULO I";
$categoria = "constituicao-da-republica-federativa-do-brasil-de-1988";
$tituloCategoria = "CONSTITUIÇÃO DA REPÚBLICA FEDERATIVA DO BRASIL DE 1988";

foreach ($linhasExpl as $linha){
    $data = date(DATE_RFC822);
    $data2 = date("Y-m-d h:i:s");
    $tituloSlug = ObterID($linha);
    if (empty($tituloSlug))
        continue;

    $linhas .= "<item>" . "\r\n";
    $linhas .= "<title>{$titulo}</title>" . "\r\n";
    $linhas .= "<link>http://localhost/votanalei/{$tituloSlug}</link>" . "\r\n";
    $linhas .= "<pubDate>{$data}</pubDate>" . "\r\n";
    $linhas .= "<dc:creator><![CDATA[ale]]></dc:creator>" . "\r\n";
    $linhas .= "<guid isPermaLink='false'>http://localhost/votanalei/?p={$postId}</guid>" . "\r\n";
    $linhas .= "<description></description>" . "\r\n";
    $linhas .= "<content:encoded><![CDATA[<ul{$linha}]]></content:encoded>" . "\r\n"; 
    $linhas .= "<excerpt:encoded><![CDATA[]]></excerpt:encoded>" . "\r\n";
    $linhas .= "<wp:post_id>{$postId}</wp:post_id>" . "\r\n";
    $linhas .= "<wp:post_date>{$data2}</wp:post_date>" . "\r\n";
    $linhas .= "<wp:post_date_gmt>{$data2}</wp:post_date_gmt>" . "\r\n";
    $linhas .= "<wp:comment_status>open</wp:comment_status>" . "\r\n";
    $linhas .= "<wp:ping_status>open</wp:ping_status>" . "\r\n";
    $linhas .= "<wp:post_name>{$tituloSlug}</wp:post_name>" . "\r\n";
    $linhas .= "<wp:status>publish</wp:status>" . "\r\n";
    $linhas .= "<wp:post_parent>0</wp:post_parent>" . "\r\n";
    $linhas .= "<wp:menu_order>0</wp:menu_order>" . "\r\n";
    $linhas .= "<wp:post_type>post</wp:post_type>" . "\r\n";
    $linhas .= "<wp:post_password></wp:post_password>" . "\r\n";
    $linhas .= "<wp:is_sticky>0</wp:is_sticky>" . "\r\n";
    $linhas .= "<category domain='category' nicename='{$categoria}'><![CDATA[{$tituloCategoria}]]></category>" . "\r\n";
    $linhas .= "<category domain='post_tag' nicename='{$categoria}'><![CDATA[{$tituloCategoria}]]></category>" . "\r\n";
    $linhas .= "<wp:postmeta>" . "\r\n";
    $linhas .= "<wp:meta_key>_edit_last</wp:meta_key>" . "\r\n";
    $linhas .= "<wp:meta_value><![CDATA[1]]></wp:meta_value>" . "\r\n";
    $linhas .= "</wp:postmeta>" . "\r\n";
    $linhas .= "</item>" . "\r\n";
    $postId += 5;
}

$file = fopen("test.txt", "w");
$results = fwrite($file, $linhas);
fclose($file);

DEMO

    
29.04.2015 / 05:52