php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-11-2006, 08:46
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Question Suche in Dateien die 15263x

Hallo,

ich bin relativ neu auf dem gebiet von php. Ich würde mir gerne eine Suche in php programmieren, aber ich komm damit nicht so ganz zurecht. In google hab ich keine passenden Schnipsel gefunden (vllt falscher suchbegriff ) Naja und hier im Forum hab ich zwar nen paar anhalte gefunden aber keine passende Lösung für mich. mach da jetzt schon bissel länger rum aber weis nimmer so wirklich weiter deshalb dachte ich mir kann hier einer helfen. Es sollte so in etwa aussehen:

ich habe zb 3 dateien (html). in diesen dateien steht jeweils viel text
jetzt soll ich per php forumlar ein suchbegriff eingeben und php sucht mir dann raus in welchen der lokalen dateien dieses stichwort vorkommt und gibt mir dann die treffer aus als link. wenn ich dann auf einen link klicke soll die er die datei öffnen in dem begriff vorkam und sofort zu der stellen springen und evtl das wort markieren.
Aber das soll jetzt nciht heissen ihr soltl mir das mal amchen sondern ich hätte gerne lösungsansätze und evtl links dazu oder so bzw ein tutorial.

mfg
dani
Mit Zitat antworten
  #2 (permalink)  
Alt 24-11-2006, 08:56
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn die Texte nur in den Dateien existieren und nicht in einer Datenbank abgelegt sind, dann würde ich spontan auf die preg_-Funktionen setzen.
Also z.B. mit file_get_contents oder Konsorten die Texte in Strings laden und mit preg_match bzw. preg_match_all nach eventuellen Treffern suchen und bei Erfolg auswerten. Um per Link zur jeweiligen Datei zu gelangen und den Suchbegriff zu markieren, kannst du dann den bzw. die benötigten Parameter via $_GET an die jeweilige Datei übergeben. Das als kleiner Beispielansatz.
Mit Zitat antworten
  #3 (permalink)  
Alt 24-11-2006, 08:57
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Form wirst du easy hinkriegen SelfHtml dann musst du anhand des Suchbegriffst die Dateien durchsuchen, wobei dir folgende Fkt helfen könntenGanz allgemein findest du Infos im Manual und Tutorial zu RegExp bei der Suma deiner Wahl.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 24-11-2006, 09:43
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo

also regex ist ja eigentlich nicht das was ich bruache oder ich komm grade bisschen durcheinander.

Zitat:
Hier sind ein paar Anwendungsbeispiele wo man Regex gebrauchen könnte.

1.

Regex kann man zum Beispiel benutzen um ein Eingabefeld auf Gültigkeit zu prüfen. Dies macht man z.B. bei einer Eingabe einer Emailadresse oder Spielernamens.
2.

Manchmal möchte man aus einem fertigen String, z.B. von einer anderen Seite, bestimmte Informationen auslesen. Diese kann man dann in seinem Script weiter verarbeiten. Wenn möglich sollte man aber sscanf benutzen. Man sollte nicht immer die Regex-Engine anwerfen.
3.

Mit Regex kann man auch Teilstrings in einem String ersetzen lassen die man nicht ohne weiteres mit str_replace ersetzen lassen kann. Für Smilies braucht man z.B. kein Regex, die kann man einfach mit str_replace in die Bilder umwandeln.

mein code ist bisher soweit

PHP-Code:
<h1>Suche in Dateien</h1>
<form method="get">
<p>
    <label>Suchen nach <input name="s" value="<?=htmlspecialchars($_GET['s'])?>"/></label>
    <br>
    <input type="submit" />
</p>
</form>
<?php
    
if(!$_GET['s'])
        die();    

echo 
"Treffer mit <b>".$_GET['s']."</b> :";

?>
weiter bin ich noch nicht gekommen. jetzt habe ich es schonmal soweit das ich das suchwort in get[s] drin habe. aber wie verfahre ich weiter?
müsste das in etwa so gehen oder ?


PHP-Code:
if((file_get_contents($datei), $_GET['s']) !== false)
.... 


€dit:

also ich habs mal so bis jetzt und der gibt dann "1" aus also hat er das suchwort in der datei gefunden. nur müsste ich jetzt einen link zu der datei machen und das gesamte verzeichnis (also dessen dateien) sowie unterverzeichnisse durchsuchen.


hier der neue code:

PHP-Code:
Suche in Dateien<br>
<form method="get">
<p>
    <label>Suchen nach <input name="s" value="<?=htmlspecialchars($_GET['s'])?>"/></label>
    <br>
    <input type="submit" />
</p>
</form>
<?php
    
if(!$_GET['s'])
        die();
    
    echo 
"Treffer mit <b>".$_GET['s']."</b> :";

if (
file_get_contents("test.txt",$_GET['s']))
echo 
"1";

?>

Geändert von dani1609 (24-11-2006 um 10:03 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 24-11-2006, 09:59
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein. Mit deinem Ansatz bist du definitiv an jeder möglichen Lösung vorbei. Am besten schaust du dir mal die Funktionsbeschreibung von file_get_contents im Manual an, denn der zweite, optionale Paramter hat eine ganz andere Funktion, als du glaubst. Darüber hinaus sind reguläre Ausdrücke genau das, was du brauchst. Insofern würde ich mich nochmal mit der Materie befassen. Einen Lösungsansatz habe ich dir weiter oben ja schon gegeben.

EDIT:

Ich sehe gerade, dass ich mich verlesen habe, da du file_get_contents gar keinen zweiten Parameter übergibst...


Zitat:
Original geschrieben von dani1609
PHP-Code:
if((file_get_contents($datei), $_GET['s']) !== false)
.... 
EDIT:

Dieses Konstrukt macht für mich nur immernoch keinen Sinn.



Geändert von Griecherus (24-11-2006 um 10:04 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 24-11-2006, 10:28
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich habs ja jetzt anders. aber die funktion die ich benutzte speichert ja nur den dateinhalt in einem string. also muss ich diesen string dann durchsuchen oder und nicht die datei direkt?


PHP-Code:
Suche in Dateien<br>
<form method="get">
<p>
    <label>Suchen nach <input name="s" value="<?=htmlspecialchars($_GET['s'])?>"/></label>
    <br>
    <input type="submit" />
</p>
</form>
<?php
    
if(!$_GET['s'])
        die();
    
    echo 
"Treffer mit <b>".$_GET['s']."</b> :";

if (
file_get_contents("test.txt",$_GET['s']))
echo 
"1";

?>
Mit Zitat antworten
  #7 (permalink)  
Alt 24-11-2006, 10:31
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
regex ist ja eigentlich nicht das was ich bruache oder ich komm grade bisschen durcheinander.
Ich tippe auf zweiteres , weil RegExp das einzige ist, wie du das umsetzen kannst. Du willst ja, dass die Suchtreffer auf der Seite markiert werden (z.B. mit einem span und background-color) und das mein Guter geht nur mit RegExp. Aber verwende besser preg_replace() und nicht preg_match().
preg_replace() sucht und ersetzt im gleichen.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 24-11-2006, 10:35
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich glaube du hast meinen Beitrag nicht ganz gelesen... Schau mal bitte im PHP-Manual nach, welche Funktion der zweite Parameter von file_get_contents hat (in deinem Fall $_GET['s'])...

Nochmal: Du lädst eine Datei mit file_get_contents in einen String und suchst mit preg_replace (@jahlives: danke für die Verbesserung ) nach deinem gewünschten Suchwort usw.
Mit Zitat antworten
  #9 (permalink)  
Alt 24-11-2006, 10:40
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich danke euch mal jungs.
das mit dem regex sprich markieren usw will ich erstmal weglassen wichtig ist das die suche jetzt mal funzt also man klickt auf den link und springt dann zu der stelle an der datei. kann mir jemand vllt bisschen auf die sprünge helfen ? ich raffs echt net.

// entfernen von Tags und einlesen in string
if (strip_tags(file_get_contents("test.txt",$_GET['s'])))
Mit Zitat antworten
  #10 (permalink)  
Alt 24-11-2006, 10:44
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sag mal, hast du meine letzten drei Beiträge überhaupt gelesen? Ich habe dich jetzt drei mal auf einen grundlegenden Fehler hingewiesen und du bist weder darauf eingegangen, noch hast du den Fehler verbessert. Mehr als versuchen dir zu helfen kann ich nicht...
Mit Zitat antworten
  #11 (permalink)  
Alt 24-11-2006, 10:46
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

woher hast du den Sch... dass file_get_contents() den Suchbegriff als Argument brauchen könnte. Lies das file ein und stelle mittels strpos() fest ob der Suchbegriff drinn vorkommt
PHP-Code:
$daten strip_tags(file_get_contents('datei.html'));
if(
strpos($daten,$_GET['s']) !== false){
    
//Begriff wurde gefunden also einen Link drauf anlegen
}else{
    
//Diese Datei enthält den Begriff nicht

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #12 (permalink)  
Alt 24-11-2006, 10:56
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Griecherus

sorry ich hab des erst jetzt durch das beispiel von jahlives kapiert was du gemeint hast. ich stand irgendwie auffm schlauch ich weis auch net.

@jahlives
schonmal danke für das script. hast mir jetzt schon gut geholfen. den sch.... hab ich von irgendeiner seite aus google aber find sie nimmer.

ich habs jetzt grade so:

PHP-Code:
$daten strip_tags(file_get_contents('test.html'));
if(
strpos($daten,$_GET['s']) !== false){
    
//Begriff wurde gefunden also einen Link drauf anlegen
    
echo('<li><a href="test.html">bla</a></li>'.PHP_EOL);
}else{
    
//Diese Datei enthält den Begriff nicht
    
echo "-.-";
}

?> 
nur sollte ich die datei ja nicht fest angeben, sondern er sollte ja suchen in dateien und wenn er einen treffer hat irgendwie den pfad auslesen von der datei und diesem beim link verwenden. Ich probier mal mit der funktion getPathName() bissel rum...
Mit Zitat antworten
  #13 (permalink)  
Alt 24-11-2006, 11:03
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Prinzip: Du legst alle Dateien, die durchsucht werden sollen, in ein Array ab. Dieses durchläufst du dann mit foreach und wendest auf jede Datei deinen Code-Schnipsel an.

PHP-Code:

$documents 
= array(
    
'document_1.html'
    
'document_2.html',
    
'document_3.html'
);

foreach (
$documents as $document) {
    
// dein Codeschnipsel

Das wäre eine - grob dargestellte - Möglichkeit. Die Dokumente könnten z.B. auch dynamisch ins Array abgelegt werden, in dem du ein bestimmtes Verzeichnis ausliest... Aber das würde jetzt erstmal zu weit führen.
Mit Zitat antworten
  #14 (permalink)  
Alt 24-11-2006, 11:06
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Des Griechen Lösung würde ich dir empfehlen

Gruss

tobi

p.s. wenn du Verzeichnisse auslesen willst dann schau dir glob() an
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #15 (permalink)  
Alt 24-11-2006, 11:15
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

cool danke euch. also wenn ichs so amche klappt das schonmal aber ich will ja die verzeichnisse durchsuchen.
omg ich habs wieder verrissen

des mit dem foreach stimmt net so ganz. des prinziop kapier ich. ich lese die ganze dateinamen ein und speicher die in nem array und dann kann ich die ja mit der 2ten foreach verarbeiten. aber was mach ich wenn ich unterverzeichnisse hab, da greift ja glob dann nicht.

PHP-Code:
$documents = foreach (glob("*.html") as $filename);

foreach (
$documents as $document) {
    
    
$daten strip_tags(file_get_contents('test.html'));
if(
strpos($daten,$_GET['s']) !== false){
    
//Begriff wurde gefunden also einen Link drauf anlegen
    
echo('<li><a href="test.html">bla</a></li>'.PHP_EOL);
}else{
    
//Diese Datei enthält den Begriff nicht
    
echo "-.-";
}
    

Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:10 Uhr.