I'm having a problem with PHP. I created a search system with php without using database. the search works perfectly, the system can search for a word in the files, the problem is in displaying the results of the search, the system used to display the names of the files, but I'm using regular expressions to display the title of the page, if it exists. the code works perfectly only when there are no line breaks after the. However, if I give a simple enter after the code does not work correctly. Here are the codes: Home index.php
<form action="busca.php" method="get">
<input type="text" name="s"><br>
<input type="submit">
</form>
search.php
<?php
//verifica se existe o campo $_POST['pesquisa'] vindo do formulário
$pesq = (isset($_GET['s'])) ? trim($_GET['s']) : '';
//verifica se o campo está vazio
if(empty($pesq)){
echo 'Digite no campo de Busca';
}else{
//pasta onde está os arquivos da pesquisa
$pasta = "arquivos";
//arquivo atual
$atual = "$pasta/busca.php";
//faz a listagem dos arquivos da pasta indicada, e atribui a um array
$busca = glob("$pasta/*.{php,html}", GLOB_BRACE);
//percorre o array
foreach($busca as $item){
//verifica se o arquivo não é o atual
if($item !== $atual){
//abre o arquivo
$abrir = fopen($item, "r");
//faz um loop até chegar o final do arquivo
while(!feof($abrir)){
//ler arquivo
$lendo = fgets($abrir);
//remove os caracteres html e php
$conteudo = $lendo;
$lendo = strip_tags($lendo);
//verifica se tem algum um item da pesquisa
if(stristr($lendo, $pesq) == true){
//remove a extensão .php
$dados = str_replace(".php", "", $item);
//retorna o nome apenas do arquivo
$dados = basename($dados);
preg_match_all('/<title[^>]*>(.*?)<\/title>/',$conteudo, $matches, PREG_PATTERN_ORDER);
$title = isset($matches[1][0]) ? $matches[1][0] : $dados;
//coloca o link no array
$result[] = '<a href="?pagina='.$dados.'">'. $title.'</a>';
//apaga a variavel $dados
unset($dados);
}
//apague a variavel lendo
unset($lendo);
}
//fecha o arquivo
fclose($abrir);
}
}
/*IMPRIMIR O RESULTADO*/
//verifica seo result existe
if(isset($result) && count($result) > 0){
//remove os resultado iguais
$result = array_unique($result);
echo '<ul>';
//percorre o array
foreach($result as $link){
echo "<li>$link</li>";
}
echo '<ul>';
}else{
echo 'Nenhum resultado na busca';
}
}
?>