Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
nach ganzen wörtern in einem text suchen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
nach ganzen wörtern in einem text suchen


 
Kropff
08-04-2002, 14:24 
 
hallöle

wie kann ich in einem beliebigen text nach GANZEN wörtern suchen?
$abfrage = "SELECT * FROM search WHERE inhalt LIKE '%$suchwort%'";
gibt auch alle ergebnisse aus, wo $suchwort ein teil eines wortes ist.
gruss
peter

 
Sonnenschein
08-04-2002, 16:10 
 
Da sollte doch ein blank nach $Suchwort reichen, oder?

 
Juggler
08-04-2002, 16:28 
 
Genau, es fehlen die Blanks:

"SELECT * FROM tbl WHERE (BINARY field LIKE '% $suchwort %')"

Das BINARY bewirkt zusätzlich, dass Groß/Kleinschreibung berücksichtigt wird.

 
Juggler
08-04-2002, 16:36 
 
Ach ja...

Damit das dann funktioniert darf das Wort nicht am Anfang anfangen sondern davor müsste dann immer ein Leerzeichen stehen.
Desweiteren findet man damit nur Wörter, die von einem Leerzeichen gefolgt werden d.h. sobald ein Satzzeichen auftritt wird das Wort nicht mehr gefunden...

 
Kropff
08-04-2002, 16:40 
 
Damit das dann funktioniert darf das Wort nicht am Anfang anfangen sondern davor müsste dann immer ein Leerzeichen stehen.
Desweiteren findet man damit nur Wörter, die von einem Leerzeichen gefolgt werden d.h. sobald ein Satzzeichen auftritt wird das Wort nicht mehr gefunden...

und genau das ist das problem.
peter

 
Juggler
08-04-2002, 22:14 
 
Dann bleibt dir vermutlich nichts anderes übrig, als die Daten auszulesen und dann mit RegExp zu prüfen.
Falls jemand allerdings eine andere Lösung haben sollte würde auch mich das freuen...

 
goth
10-04-2002, 02:08 
 
Reguläre Ausdrücke kann man auch direkt bei der Abfrage verwenden:

http://www.mysql.com/doc/R/e/Regexp.html

bzw.:

http://www.mysql.com/doc/S/t/String_comparison_functions.html

( RLIKE bzw. REGEXP )

 
archie
11-04-2002, 15:48 
 
<input class="feld" type="text" name="suche">
<input class="button" type="submit" value="suchen" name="submit">



$result = mysql_query (" SELECT * FROM Tabellenname WHERE DEINE_SPALTE_MIT_TEXT LIKE '%".addslashes($suche)."%'")

 
Troublegum
11-04-2002, 17:57 
 
Lesen Archie Lesen :o
Das war nicht gefragt und übrigens auch schon längst bekannt. ;)

 
Titus
11-04-2002, 20:22 
 
Original geschrieben von Juggler
Ach ja...

Damit das dann funktioniert darf das Wort nicht am Anfang anfangen sondern davor müsste dann immer ein Leerzeichen stehen.
Desweiteren findet man damit nur Wörter, die von einem Leerzeichen gefolgt werden d.h. sobald ein Satzzeichen auftritt wird das Wort nicht mehr gefunden...

einfach vorm Vergleichen Leerzeichen vor und hinter den Feldinhalt einfügen:

"SELECT * FROM tbl WHERE (BINARY CONCAT(' ', field, ' ') LIKE '% $suchwort %')"

 
Juggler
11-04-2002, 21:49 
 
Natürlich ist das möglich...

Aber zumindest mir geht es so, dass ich nicht ausschliesslich Buchstaben und Leerzeichen verwende, sondern auch ab und an mal Satzzeichen setze. Desweiteren enthält die zu durchsuchende Spalte auch HTML In diesem Fall wären also RegExp genau das Richtige.

Ich hab nur noch nicht geblickt, wie das genau funktioniert


$pattern = ".*[\\\\s]+$search[^a-zA-Z]{1}.*";
$query = "SELECT * FROM tbl WHERE (BINARY field REGEXP '$pattern')";


Geht das so in etwa?

Ich weis... ausprobieren...

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:45 Uhr.