• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Begriff im txt-Datei überprüfen

Status
Für weitere Antworten geschlossen.

Raider

Neues Mitglied
Hallo

Ich verstehe noch nicht viel von PHP aber ich hoffe dass mir hier trotzdem geholfen werden kann.

Also ich würde gerne überprüfen ob ein Begriff sich in der Datei Begriffe.txt befindet.

Wäre für jede Hilfe dankbar.
 
Wenn du Datenbanken benutzen würdest, wäre das ganze vieil einfacher....
ansonsten würde ich sagen php lernen ;)
 
PHP:
<?php
  function inFile($file, $string, $cas = false)
  {
    if($cas)
      return strstr( file_get_contents($file), $string );
    return stristr( file_get_contents($file), $string );
  }

  //Beispiel 1
  $test = inFile("Begriffe.txt", "test");
  //Liefert das erste vorkommen des Begriffs (entspricht true) wenn er vorhanden ist, sonst false. Auf Groß-/Kleinschreibung wird nicht geachtet

  //Beispiel 2
  $test = inFile("Begriffe.txt", "test", true);
  //Das selbe, aber es wird auf Groß-/Kleinschreibung geachtet
?>
Wie vielleicht zu sehen ist geht es um die Funktionen strstr() ( stristr() ) und file_get_contents().

Ich hoffe ich konnte helfen, sosnt einfach fragen ;)
 
WOW, super ... danke für die Mühe!! Und die Links waren auch sehr hilfreich :D

Würdest du mir villeicht auch bitte nur ganz kurz diese Zeile hier erklären?
Code:
function inFile($file, $string, $cas = false)

Ich hab mich bereits hier über "function" informiert aber Dein Code sieht im Vergleich zu anderen einfach komplizierter aus. :)
 
Die Funktion ist ja wohl (fast) die einfachste die es überhaupt gibt. Was du vlt. als kompliziert erachtest ist vlt die Parameterübergabe

PHP:
  function inFile($file, $string, $cas = false)
    return $cas ? strstr(file_get_contents($file), $string) : stristr(file_get_contents($file), $string);

kürzer krieg ichs auch nicht mehr xD
 
Bwah. Sonst benutz ich den konditionalen Operator an den unmöglichsten Stellen (auch gerne mal doppelt und dreifach verschachtelt). Jetzt wos mal angebracht wäre vergess ichs - war ja klar ;ugl
 
Also ich versuch mal das zu erklären was ich verstanden habe und dann könnt ihr mich ja korrigieren wenn ich falsch liege:

$file bezieht sich in diesem Fall auf "Begriffe.txt"
$string bezieht sich auf den Begriff selbst, in diesem Fall "test"
$cas = false: Echt keine Ahnung was das bedeuten sollte. Auch Google konnte mir dabei nicht helfen.
if($cas): Wenn die "Variable" $cas existiert ...

return strstr( file_get_contents($file), $string );

return = Ausgabe des functions
strstr( file_get_contents($file), $string ) liest den Begriff "test", das sich in Begriffe.txt befindet aus, ohne dabei auf Klein- und Grossbuchstaben zu achten.

return stristr( file_get_contents($file), $string );
Genau das gleiche, nur wird hierbei auf Klein- und Grossbuchstaben geachtet.

inFile("Begriffe.txt", "test"); ist im Prinzip nichts weiter als inFile($file, $string)

inFile("Begriffe.txt", "test", true); sollte die Ausgabe von stristr( file_get_contents($file), $string ) sein aber warum dahinter "true" steht, verstehe ich echt nicht.

Soweit richtig?
 
Erstmal hast du strstr() und stristr() verwechselt ;)

if($cas) prüft nicht ob die Variable existiert, sondern ob sie wahr ist (d.h. alles außer false, 0, NULL oder einem leeren String ""/'').

$cas = false ist im Gunde das gleiche wie $file und $string, das = dahinter weißt ihr lediglich einen Standardwert zu den sie hat falls sie beim Funktionsaufruf nicht angegeben wird (in diesem Falle false, was heißt, dass mit stristr() geprüft wird, also case-insensitive).

Beim ersten Aufruf der Funktion ist der dritte Parameter nicht angegeben, also bleibt $cas = false. Beim zweiten mal wird true angegeben, der Initialwert wird überschrieben und es wird mit strstr() (=case-sensitive) geprüft.

Verständlich? :mrgreen:
 
vielleicht solltet ihr einen php anfänder nicht mit eurem wettkampf "wer macht den kürzesten source" abschrecken...

PHP:
function inFile($file, $string, $cas = false)
{
    if($cas)
    {
        return strstr( file_get_contents($file), $string );
    }
    else
    {
        return stristr( file_get_contents($file), $string );
    }
}

// Wenn du nun schreibst

inFile('./datei.txt', 'test');

/*
 * Wird überprüft ob irgendwo im Text
 * das wort test, oder TEST, oder TeSt
 * oder in irgendeiner anderen kombination
 * vorkommt.
 *
 * Dabei bleibt der dritte parameter von
 * "inFile" "false", wenn da nicht stehen
 * würde "$cas = false" sondern nur $cas
 * würdest du hier einen PHP-Error bekommen
 * da alle argumente ausgefüllt werden
 * müssen.
 *
 * nächstes beispiel
 */

inFile('./datei.txt', 'test', true);

/*
 * Hier word Case-Sensitive überprüft
 * also wird nur auf "test" überprüft.
 * 
 * dabei wird der dritte parameter
 * überschrieben
 */

hoffe ich konnte helfen ^^
 
aaaaaahso ... alles klar, dankeschön habs nun kappiert. Mit else klingt es meine Meinung nach vieeeel logischer :-)
 
ist halt eigentlich unnötig.

Wenn if($cas) stimmt, dann wird das erste return benutzt. Return bricht die Funktion ab, also brauchst du dich nicht mehr mit else um das 2. return kümmern.
 
hier gehts aber um das grundverständniss und da finde ich das manche hier mehr profilieren als wirklich zu helfen...
 
... was hast du? ich habe es ihm nur noch einmal erklärt, warum das auch ohne else funktioniert, damit er vielleicht die Variante ohne else auch versteht, um sie später selbst anwenden zu können. Ohne Verständnis wird er das nämlich niemals können, und das bring ihn dann nicht weiter. Schließlich soll er etwas neues lernen, und da gehört verstehen dazu.
 
Danke Frank. Werd ich mir im Hinterkopf behalten aber ich beschäftige mich halt erst seit zwei Wochen mit PHP und da ist es denk ich mal besser für mich Schritt für Schritt zu lernen als irgendwie von einem Hügel zu den anderen zu springen :)
Aber die Variante ohne Else ist auf jeden Fall interessant. Werd ich mir wie gesagt im Hinterkopf behalten ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben