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
  #31 (permalink)  
Alt 05-12-2006, 16:07
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

Du musst nicht den Filename, sondern den Inhalt des Files an preg_match() übergeben. Also erst jeden Filename mittels file_get_contents() einlesen und erst dann den preg_match() drüber.

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
  #32 (permalink)  
Alt 07-12-2006, 11:45
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich bekomms einfach net hin
hab schon rumprobiert manchmal zeigt er mir was an aber grade garnix mehr


PHP-Code:
    if(!$_GET['s'])
        die();
    
    echo 
"Treffer mit <b>".$_GET['s']."</b> :<br><br>";

$documents = array();
foreach (
glob('*.html') as $document) {
   
$documents[] = $document;
}

foreach (
$documents as $document) {
$content strip_tags(file_get_contents($document));
}
preg_match('/\b'.$_GET['s'].'\b/i',$document,$treffer);
//Wenn Treffer 0 nicht empty ist
if(!empty($teffer[0])){
for(
$i=0$i<10$i++) {
    
//also haben wir einen Treffer
    
echo "".$treffer[$i]."<br>";
    }
}else{
   
//haben wir keinen Treffer

an dem probier ich grade rum. des dürfte doch so passen oder.ich les die dateinamne ein und such dann dort drinne.


mfg
Mit Zitat antworten
  #33 (permalink)  
Alt 07-12-2006, 11:52
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

die zweite foreach schleife ist nicht korrekt. überlege mal, was in $content drin steht, wenn diese terminiert.

schau mal außerdem scharf hin, was du dem preg_match() übergibst. was davon ist der vorbereitete inhalt einer jeden datei?
Mit Zitat antworten
  #34 (permalink)  
Alt 07-12-2006, 12:39
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo penizillin,
also in $content steht der dateiinhalt einer datei drinne aber wenn ich

PHP-Code:
preg_match('/\b'.$_GET['s'].'\b/i',$document,$treffer); 
durch

PHP-Code:
preg_match('/\b'.$_GET['s'].'\b/i',$content,$treffer); 
ersetze habe ich den gleichen fehler, er zeigt nix an !?


mfg
Mit Zitat antworten
  #35 (permalink)  
Alt 07-12-2006, 12:51
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das liegt daran, dass die foreach-schleife immer noch nicht korrekt ist. warum glaubst du, dass sie auf einmal korrekt ist, wenn du sie nicht veränderst?
Mit Zitat antworten
  #36 (permalink)  
Alt 07-12-2006, 12:54
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo,
ich steh grade total auf dem schlauch (ich weis angeber ) ich seh den fehler nicht
mom mal ist das ";" falsch ?

edit:
ne das ";" kanns ja net sein
Mit Zitat antworten
  #37 (permalink)  
Alt 07-12-2006, 13:22
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

PHP-Code:
foreach ($documents as $document) {
$content strip_tags(file_get_contents($document));
}
preg_match('/b'.$_GET['s'].'b/i',$document,$treffer); 
Also mein Guter du liest IMMER NOCH den Dateinamen ein und versuchst in DIESEM zu suchen. Die foreach() liefert in $document der Pfad zum File und du baust diesen wieder in den RegExp ein OBWOHL du den Inhalt in $content hast. Ausserdem macht es absolut keinen Sinn den RegExp ausserhalb der Schleife zu haben. Sonst wird bestenfalls das letzte File durchsucht, aber sicher nicht alle.

Noch Fragen dann

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
  #38 (permalink)  
Alt 07-12-2006, 14:05
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jahlives
PHP-Code:
foreach ($documents as $document) {
$content strip_tags(file_get_contents($document));
}
preg_match('/b'.$_GET['s'].'b/i',$document,$treffer); 
Also mein Guter du liest IMMER NOCH den Dateinamen ein und versuchst in DIESEM zu suchen. Die foreach() liefert in $document der Pfad zum File und du baust diesen wieder in den RegExp ein OBWOHL du den Inhalt in $content hast. Ausserdem macht es absolut keinen Sinn den RegExp ausserhalb der Schleife zu haben. Sonst wird bestenfalls das letzte File durchsucht, aber sicher nicht alle.

Noch Fragen dann

Gruss

tobi
Ich hab doch die manual gelesen sonst wüsste ich ja auch nicht für was die parameter genau sind. und ich hatte $document doch durch $content ersetzt, siehe weiter oben. ich habe nun auch den preg_match in die schleife mitgenommen,nur leider ohne ergebnis.

PHP-Code:
foreach ($documents as $document) {
$content strip_tags(file_get_contents($document));
preg_match('/\b'.$_GET['s'].'\b/i',$content,$treffer);


ich lese praktisch pro durchlauf jeden dateinamen ein und speicher ihn in $document, dieser wird dann an das array $documents übergebn. danach lese ich mit den dateiinhalt ein und speichere diesen in $content. im pregmatch sage ich ihm das parameter 1 das suchmuster ist, also nur nach dem eingegebenen wort suchen und groß/kleinschreibung ausser acht lassen. und in content sucht er dann nach diesem begriff. das array treffer wird nun mit den ergebnisse gefüllt. das stimmt doch so oder ?


mfg
Mit Zitat antworten
  #39 (permalink)  
Alt 07-12-2006, 14:26
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:
ersetze habe ich den gleichen fehler, er zeigt nix an !?
Vllt ist's ja kein Fehler, sondern die Datei enthält den String nicht. Was steht denn bei der Suche in $_GET['s'] drinn ? Hast du mal den Inhalt von $content testweise gedumped (var_dump($content)) ? Ist das in etwa das was du erwartest ?
Ausserdem kannst du das kürzer schreiben
PHP-Code:
foreach (glob('*.html') as $document) {
    
var_dump($document);
   
$content strip_tags(file_get_contents($document));
   
preg_match('/b'.$_GET['s'].'b/i',$content,$treffer);

Ergibt der obige Dump die Ausgabe des kompletten Pfades einer Datei ? Irgendwie beschleicht mich das Gefühl, dass dein glob() überhaupt nix zurückliefert.
Könntest ja testweise auch
PHP-Code:
var_dump(glob('*.html')); 
machen. Bin sehr sicher, dass dies ein leerer Array ist.
__________________
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
  #40 (permalink)  
Alt 07-12-2006, 14: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 das ist so:

in $_GET['s'] steht grade nur immer "test" drinnen ohne die " " da ich grade nur nach diesem string suche.

ich habe alle dateien im gleich verzeichnis.
dann habe ich die suche.php (dadrin ist der code mit dem ich die probs habe). zusätzlich sind im selben ordner 3 dateien:

hallo.html - diese enhält den text "hallo" (ohne " ")
test.html - diese enhält den text "test" (ohne " ")
test2.html - diese enhält den text "test" (ohne " ")

PHP-Code:
var_dump(glob('*.html')); 
ergibt:

Zitat:
array(3) { [0]=> string(10) "hallo.html" [1]=> string(9) "test.html" [2]=> string(10) "test2.html" } array(3) { [0]=> string(10) "hallo.html" [1]=> string(9) "test.html" [2]=> string(10) "test2.html" } array(3) { [0]=> string(10) "hallo.html" [1]=> string(9) "test.html" [2]=> string(10) "test2.html" }
PHP-Code:
var_dump($document); 
ergibt:

Zitat:
array(3) { [0]=> string(10) "hallo.html" [1]=> string(9) "test.html" [2]=> string(10) "test2.html" } array(3) { [0]=> string(10) "hallo.html" [1]=> string(9) "test.html" [2]=> string(10) "test2.html" } array(3) { [0]=> string(10) "hallo.html" [1]=> string(9) "test.html" [2]=> string(10) "test2.html" }
PHP-Code:
var_dump($content); 
ergibt:
Zitat:
string(5) "hallo" string(4) "test" string(4) "test"
also da steht schon was drinnen. ich habe die var_dump's immer innerhalb der foreach schleife gehabt.



mfg

Geändert von dani1609 (07-12-2006 um 14:45 Uhr)
Mit Zitat antworten
  #41 (permalink)  
Alt 07-12-2006, 14:57
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du scheinst es nicht systematisch angehen zu können.
so muss dein programm funktionieren:

Code:
anzulegen: array für treffer

für jede datei (*.html) wiederhole 
{
   ermittle inhalt der datei in variable $inhalt
   durchsuche den inhalt mittels regexp.
   wenn( etwas gefunden )
   {
      füge den inhalt und/oder den dateinamen in das array $treffer ein
   }
}

wenn ($treffer nicht leer)
{
   gib ergebnisse aus $treffer aus
}
wenn du weiterhin planlos rumstocherst und nach jedem mißerfolg hier rumjammerst, erntest du in diesem forum nichts nettes.
Mit Zitat antworten
  #42 (permalink)  
Alt 07-12-2006, 15:01
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

Liefert denn der RegExp etwas zurück wenn du nur
PHP-Code:
preg_match('/'.$_GET['s'].'/i',$content,$treffer); 
schreibst ?
Da dein Fileinhalt nur test enthält wird ein PregMatch nicht greifen, solange er nach einer Wortgrenze sucht (\b). Da ist ja keine Wortgrenze. Wenn du den RegExp gleich belässt, dann solltest du im Quelltext vor und nach test ein Leerzeichen haben (dann funzt dat auch mit \b)

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
  #43 (permalink)  
Alt 07-12-2006, 15:19
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo,

ich hab es jetzt geschafft das er mir was ausgibt. danke schonmal. nur bekomme ich es nicht hin das array treffer zu füllen.
ich habe es so und dann gibt er mir auch die ergebnisse aus:


PHP-Code:
foreach (glob('*.html') as $document
{
//var_dump(glob('*.html'));
    //var_dump($document);
   
$content strip_tags(file_get_contents($document));
   if (
strpos('/b'.$_GET['s'].'b/i',$content,$treffer) !== false)
   {
   
//echo('<li><a href="'.$document.'" target="MAIN_FRAME">'.$document.'</a></li>'.PHP_EOL);
   
}
   
//var_dump($content);
}
//var_dump($content);

//Wenn Treffer 0 nicht empty ist
if(!empty($teffer[0])){
for(
$i=0$i<10$i++) {
    
//also haben wir einen Treffer
    
echo "".$treffer[$i]."<br>";
    }
}else{
   
//haben wir keinen Treffer


ich habe das echo nach strpos (das ich anstatt preg_match benutzt habe da das schneller ist) mal auskommentiert. wenn ich es nicht mache bekomme ich links zu den dateien in denen der begriff ist.
muss ich dann dieses treffer array noch füllen oder ist das unnütze ?
Ist es eigentlich möglich wenn ich nen link anklicke das er mir dann genau zu dem punkt in der datei springt indem der begriff vorkommt?also wie ne art anker punkt in html.


mfg
dani


€dit:
Ich hab nen Fehler entdeckt. solange nur test in den datein steht klappt es wunderbar. nur sobald zb test blabla drinen steht wird die datei nicht als treffer angezeigt. habt ihr da einen tipp?


Geändert von dani1609 (07-12-2006 um 15:23 Uhr)
Mit Zitat antworten
  #44 (permalink)  
Alt 07-12-2006, 15:27
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

1. Du arbeitest immer noch mit Wortgrenzen. Obwohl du aller grösster Wahrscheinlichkeit nach keine im Quelltext hast.
2. das Array Treffer ist nur innerhalb der foreach-Schleife brauchbar. Weil es bei jedem Durchlauf wieder neu angelegt wird.
3. Eine Schleife brauchst du nicht um die Treffer auszulesen, ein einfaches
PHP-Code:
echo $treffer[1]; 
sollte reichen.
4. Du hast die Wortgrenzen schon so \b geschrieben ?

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
  #45 (permalink)  
Alt 07-12-2006, 15:46
dani1609
 Newbie
Links : Onlinestatus : dani1609 ist offline
Registriert seit: Nov 2006
Beiträge: 29
dani1609 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi,

also ich hab die wortgrenzen mal rausgemacht obwohl ich dies zuvor eingehalten habe.

test.html enhält jetzt "test" (ohne " ")
und
test2.html enhält jetzt "das ist eine test datei" (ohne " ").

er zeigt mir aber nur die test.html als treffer an. obwohl ja in test2.html auch das wort treffer vorhanden ist. ich kann mir das nicht erklären.

das hier funktioniert bei mir. aber er liest hier ja nix aus einer datei, aber das funktioniert bei meinem script ja ähnlich.

bsp

mfg
dani


das script kurz.

PHP-Code:
foreach (glob('*.html') as $document
{
//var_dump(glob('*.html'));
    //var_dump($document);
   
$content strip_tags(file_get_contents($document));
   if (
strpos('/'.$_GET['s'].'/i',$content,$treffer) !== false)
   {
   
//echo('<li><a href="'.$document.'" target="MAIN_FRAME">'.$document.'</a></li>'.PHP_EOL);
   
}
   
//var_dump($content);

  //var_dump($content);
  
echo $treffer[1];
  echo 
$treffer[2];

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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:01 Uhr.