Como parsear HTML e XML corretamente em PHP? Analisando DOMDocument, SimpleXML e expressões regulares
Olá a todos! Sou um desenvolvedor PHP iniciante e já estou sofrendo há duas semanas com parsing de páginas HTML. Preciso extrair todos os links e títulos de um site externo, mas não consigo entender como fazer isso corretamente.
Primeiro, tentei usar expressões regulares, mas o código fica horrível e quebra com a menor alteração no HTML. Aqui está o que eu tinha:
```php
$html = file_get_contents('https://example.com');
preg_match_all('/(.*?)<\/a>/', $html, $matches);
```
Isso funciona apenas para links simples, mas se houver aspas nos atributos ou quebras de linha, tudo quebra. E nem vou falar sobre XML — lá tem namespaces próprios e aninhamento complexo.
Depois, me deparei com `DOMDocument` e `SimpleXML`, mas não entendo a diferença e o que escolher. Também ouvi falar sobre `DOMXPath` e `DOMCrawler`, mas tenho medo de que seja muito complicado para minha tarefa.
Por favor, me ajudem:
1. Qual ferramenta é melhor para parsing de HTML e XML?
2. Como lidar corretamente com erros se o HTML estiver malformado?
3.