2009-10-23 6 views
0

Salut j'ai ces lignes ici, je suis en train d'extraire le premier paragraphe trouvé dans le fichier, mais cela ne renvoie aucun résultat, sinon il renvoie des résultats qui ne sont même pas dans <p> tags qui est impair?extrait du texte de l'étiquette

$file = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']; 
$hd = fopen($file,'r'); 
$cn = fread($hd, filesize($file)); 
fclose($hd); 

$cnc = preg_replace('/<p>(.+?)<\/p>/','$1',$cn); 
+0

Attention aux personnes demandant des fichiers t Ce ne sont pas des fichiers que vous souhaitez servir. Les utilisateurs peuvent demander "foo.html", mais certains utilisateurs ne sont pas si gentils. –

+0

comment pourrais-je faire pour analyser les "mauvaises" demandes? – heresjohnnny

+0

Ne le faites pas. Utilisez une liste blanche des fichiers autorisés. S'assurer que le fichier a une extension acceptable (par exemple 'html'), et que' $ _SERVER ['REQUEST_URI'] 'matches' [A-Za-z0-9 _ \.] 'Devrait faire l'affaire, et vérifier qu'il contient seulement une période unique, et cette période précède immédiatement l'extension. Ou quelque chose comme ça. Je suis sûr que quelqu'un avec plus d'expérience avec ces choses pourrait être en mesure de vous aider (ou poser une question distincte). –

Répondre

3

J'utiliser DOM parsing pour que:

// SimpleHtmlDom example 
// Create DOM from URL or file 
$html = file_get_html('http://localhost/blah.php'); 

// Find all paragraphs 
foreach($html->find('p') as $element) 
     echo $element->innerText() . '<br>'; 

Il vous permettra de remplacer de manière plus fiable une partie du balisage:

$html->find('p', 0)->innertext() = 'foo'; 
+0

PHP Simple HTML DOM Parser peut être installé avec Composer. Celui-ci a Composer autochargement: https://packagist.org/packages/sunra/php-simple-html-dom-parser – dualmon

3

Essayez ceci:

$html = file_get_contents("http://localhost/foo.php"); 
preg_match('/<p>(.*)<\/p>/', $html, $match); 
echo($match[1]);