Probleme mit substr_count

crsakawolf

Erfahrenes Mitglied
Hallo Ihr da.

Ich habe irgendwo einen Fehler, finde Ihn aber nicht.
Ich habe ein Array mit verschiedenen Suchbegriffen darin und eine Variable auf der der zu durchsuchende Text liegt.
Ich möchte nun diesen Text durchsuchen um herauszufinden wie oft ein Wort darin ist.

Leider findet er diesen text nicht, wenn ich ihn durch die Variable eintrage. Nur bei hand wie zB substr_count($txt_inhalt, "öffentlich");
Ich hab nun also geschaut, was in dem Suchwort drin ist.
Leider ist genau dieses Wort drin. Also weis ich nun auch nicht weiter, das die Variable haar genau diesen Wortlaut hat, wie ich Ihn Händich eintrage..

Hier der Code:

PHP:
for($x = 0; $x< count($such_wort); $x++)
   {
    $such_wort[$x];
    $found = substr_count($txt_inhalt, $such_wort[$x]);
.......
}
 
Bei stripos gleiche Spiel

PHP:
$position = stripos($txt_inhalt,"öffentlich");

geht

PHP:
$position = stripos($txt_inhalt, $such_wort[$x]);

geht nicht -.-
 
Und so:

PHP:
$found = substr_count($such_wort[$x], $txt_inhalt)

Wenn ich das Beispiel wie folgt ändere:

PHP:
$such_wort = array("hund", "katze", "maus");
$txt_inhalt = "katze";
for($x = 0; $x< count($such_wort); $x++) {
    $such_wort[$x];
    $found = substr_count($such_wort[$x],$txt_inhalt);
 echo $found ."<br />";
}

Erhalte ich als Ausgabe:
0
1
0

und so soll es doch auch sein oder.
Du hast in dem obigen Beispiel die Reihenfolge der Parameter vertauscht.
 
item: mach doch mal var_dump($such_wort) um den Inhalt des Arrays zu prüfen.

item: die Zeile $such_wort[$x]; sollte was tun?

item: gibt es eine Fehlermeldung oder passiert einfach nix?

Nachtrag:
tombe war schneller und hat im Gegensatz zu mir sogar ein Fehler entdeckt
 
Mit dem Parametern hatte ich auch getestet, erhalte atm leider wieder nur 0..

in var_dump steht "array(1) { [0]=> string(11) "öffentlich" }"

hier der code nomma komplett ..

PHP:
<?php

function suche_pdf($ordner, $such_wort)
{
 $f_pdf = opendir($ordner);

 while($files = readdir($f_pdf))
 {
  if($files != "." && $files != "..")
  {
   $f_txt = fopen($ordner.$files, "r");
   $txt_inhalt = "";
   $pfad = fgets($f_txt, 4096); // Dateipfad auslesen
   $pfad = "../../TLS_Intern/Informationen/".$pfad;
   while(!feof($f_txt))
   {
    $txt_inhalt .= fgets($f_txt, 4096);
   }

   fclose($f_txt);


   for($x = 0; $x< count($such_wort); $x++)
   {
    var_dump($such_wort);
    $found = substr_count($such_wort[$x], $txt_inhalt);
    $position = stripos($txt_inhalt,"öffentlich");

    $f_w = fopen("test.txt","a+");
    fwrite($f_w, $found."\r\n");
    fclose($f_w);
   }
  }
 }
}

?>

Er gibt dann leider garnix aus. habe es auch schon in eine Datei schreiben Lassen. ergebniss = 0
 
Also wie gesagt, wenn ich das Händisch eingebe also "öffentlich" findet er etwas,
nur nicht, wenn es auf der variable liegt.

Aber beim ausgeben der Variable steht auch "öffentlich" drin. ich verzweifele atm :/
 
Das lustige ist ...
Es geht nicht mit Preg_match usw :/

Irgendwas muss an dem Array Kaputt sein :(

PS: ich hatte es doch richtig..

int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
$haystack = test;
$needle = $such_wort;

PSS: Wenn ich nach einem Wort ohne UMLAUE suche ... funktioniert die ganze geschichte ..
 
Zuletzt bearbeitet:
Also, die Parameter sind in der Reihenfolge Heuhaufen, Nadel. Also zuerst den Text und dann den Suchtext. (hab mich extra in der Doku versichert)
PHP:
$found = substr_count($txt_inhalt, $such_wort[$x]);


Dein vardump sagt , dass "öffentlich" 11 Zeichen lang ist. "öffentlich" ist aber nur 10 Zeichen lang. Hast du noch irgend ein verstecktes Sonderzeichen mit drin?
 
nö eigentlich nicht...
wenn ich die var in eine datei ausgebe, habe ich auch öffentlich drin stehen.
sehr komisch :/
macht er bei allen sonderzeichen so.. mist


"öffentlich"
steht dann in der datei ..
 
Normalerweise macht er kein Mist. Aber bei dir ist irgendwo noch ein verstecktes Zeichen drin.
 
Zurück