<title>-Tags durchsuchen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
array
auswerten
code
datei
dom
einsatz
file
fragestellung
http
idee
index
list
parameter
performance
string
suchbegriff
suche
tester
url
-
Hiy.
Ich suche ein PHP-Suche-Script, das NUR die <title> tags der Html-Dateien druchsucht.
z.Z. ist dieses Hier im einsatz
<?php // ***** konfigurierbare parameter ***** $aPath = array (',/' ); // welche verzeichnisse sollen durchsucht werden $aExtension = array ( '.php' ); // welche dateitypen sollen durchsucht werden $sLinkAttrib = 'class=myStyle'; // zusätzliche attribute für die links // ***** ende konfiguration ***** $sUL = ''; // search file function searchFile($sPath) { global $sUL; global $search; global $sLinkAttrib; $sFile = strip_tags(join('',file($sPath)),'<title>,<meta>'); if (stristr($sFile, $search)) { eregi('(\<title\>)([^<]+)', $sFile, $aParts); if ($aParts[2]) { $sUL .= "<li><a href='".$sPath."' ".$sLinkAttrib.">".$aParts[2]."</a>\n"; } else { $sUL .= "<li><a href='".$sPath."' ".$sLinkAttrib.">".basename($sPath)."</a>\n"; } } } // scan directory function WBscanDir($sDir) { global $aExtension; // create dir object $oDir = dir($sDir); // loop over all files while ($sEntry = $oDir->read()) { $sPath = $sDir.'/'.$sEntry; if (! is_dir($sPath)) { reset ($aExtension); while (list($sKey, $sExt) = each($aExtension)) { if (strtolower(substr($sPath, -1 * strlen($sExt)) == strtolower($sExt))) { searchFile($sPath); } } } } $oDir->close(); } // suchbegriff vorhanden ? if (isset($search) and (trim($search) != '')) { // scan all directories while (list($sKey, $sName) = each ($aPath)) { scanDir($sName); } } ?> <html> <head> <title></title> <style> .myStyle { font-family : Verdana, Arial, sans-serif; font-size : 12px; color : Black; text-decoration : none; } .myStyle:visited { color : Black; } .myStyle:hover { color : Red; } </style> </head> <body class="myStyle"> <form action="<?php echo $PHP_SELF ?>" method="POST"> <input type='text' name='search'> <input type='submit'> </form> <? if ($sUL != '') { ?> Der Suchbegriff <b>"<?= $search ?>"</b> wurde in folgenden Seiten gefunden: <ul> <?= $sUL ?> </ul> <? } elseif (isset($search) and ($search != '')) { ?> Der Suchbegriff <b>"<?= $search ?>"</b> wurde nicht gefunden. <br> <br> <? } else { ?> Geben sie bitte einen Suchbegriff ein. <br> <br> <? } ?>
Wie mach ich das, dass es NUR die tags durchsucht? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
wireware schrieb:
Hiy.
Ich suche ein PHP-Suche-Script, das NUR die <title> tags der Html-Dateien druchsucht.
z.Z. ist dieses Hier im einsatz
Wie mach ich das, dass es NUR die tags durchsucht?
mit regular expressions:
[PHP] <?php error_reporting(E_ALL); // Text bzw. String mit file_get_contents() holen // andere Möglichkeit wäre mit fopen() oder CURL $string = file_get_contents('http://www.lima-city.de/thread/suchskript-das-nur-die-html-title-tags-durchsucht/page%3A0/perpage%3A15#858731'); // das Suchmuster mit Delimiter und Modifer (falls vorhanden) $pattern = '/<title>(.*?)<\/title>/i'; // RegEx mit preg_match_all() auswerten preg_match_all($pattern, $string, $array); // formatierte Ausgabe echo '<pre>', print_r($array, true), '</pre>'; ?> [/PHP]
siehe dazu auch hier:
http://www.regex-tester.de/uc_855_de.html
-
Du solltest noch den s-Modifier setzen, weil sonst mehrzeilige <title>-Tags nicht erkannt werden.
-
@wireware
Wie mach ich das, dass es NUR die tags durchsucht?
die fragestellung ist mir zwar irgendwie nicht das verständlichste, weild du ja auch 'tags' durchsuchst, aber ...
da eine andere idee zur lösung (hier in einsatz wo index.html von 'leo.org' untersucht wird [natürlich lokal gespeichert, wobei eben direkt auch ginge!]):
<?php $ext = ".html"; $dir = new DirectoryIterator (dirname (__FILE__)); foreach ($dir as $fileinfo) { if ( $dir->isDot () or !(strstr ($dir->__tostring(),$ext))) continue; if ( trim ($fc = file_get_contents ($fileinfo)) !== ($inner_html = trim (reset (explode ("</title>", trim (end (explode ("<title>",trim ($fc)))))))) ) { echo str_replace (array ("ä","ö","ü","Ä","Ö","Ü","ß"), array ("ä","ö","ü","Ä","Ö","Ü","ß"), $inner_html); } } ?>
und da gibt es natürlich noch ein paar. die schönste, kürzeste und eleganteste ist mit w3c DOM + xpath ! die lösung müsstest aber auch bringen ;o)
die idee von 'nikic' kannst auch einbauen, es tut sicher gut!
@simuliertes:
ist schon klar, nur laut 'php.net' sollte aus performance-gründen überall wo es nur geht, darauf verzichtet werden.
Beitrag zuletzt geändert: 30.1.2010 15:00:36 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage