kostenloser Webspace werbefrei: lima-city


<title>-Tags durchsuchen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    w******e

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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

  4. Du solltest noch den s-Modifier setzen, weil sonst mehrzeilige <title>-Tags nicht erkannt werden.
  5. @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 ("&auml;","&ouml;","&uuml;","&Auml;","&Ouml;","&Uuml;","&szlig;"), $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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!