Una cosa del genere ( non è per niente ottimizzato..ti ho buttato giù giusto un'idea)...
[CODE]
<?php
if($_POST['invia'])
{
$fp = fopen("testo.txt","r"); //leggo il file
if($fp)
{
//leggo ogni singola riga fino alla fine del file
while(!feof($fp))
{
$row = fgets($fp,1024); //leggo la riga
$exp = explode(" | ",$row);
if(in_array($_POST['author'],$exp) || in_array($_POST['book'],$exp))
{
echo $row;
}

}
}
}
?>


<form method="post" action="<?=$_SERVER['PHP_SELF']; ?>">
autore: <input type="text" name="author" value="">

book: <input type="text" name="libro" value="">
<input type="submit" name="invia" value="invia">
</form>
[CODE]

ho fatto una prova con un file 'testo.txt' che conteneva dei valori separati da '|'
ciao | ken | 19990 | libro1
ciao2 | ken2 | 199902 | libro2
ciao3 | ken3 | 199903 | libro3

Prova e fammi sap...ciao