Naja mit einem Suchsting wie
"Adobe and *otoshop or *reader" kann man ohne alle Teile zu zerstückeln nicht suchen. Aus dem Ding soll praktisch später ein SQL String werden.
Noch eine Frage, gibt es eine Möglichkeit, dass auch Or,oR,nOT... auch erkannt werden, ohne dass man alle möglichkeiten angibt? Groß und Klein Schreibung soll also nicht beachtet werden?
MfG Markus
preg_match_all Problem
Collapse
X
-
is mir klar .. nur warum du die wörter einzeln brauchst, versteh ich ned ganz ..
und lass mich (stefan) endlich aus dem spiel ^^ immer wird nach mir gesucht *fg*
Leave a comment:
-
Super, Danke, hat mir sehr geholfen.
Gebraucht wird das Ergebnis um einen SQL String für eine Suche aufzubauen.
Das ? heißt, ein buchstabe weiß ich nicht. Der * heißt mehrere Buchstaben weiß ich nicht. Ste?an sucht also Stefan und Ste*an gibt Stefan und Stephan zurück.
MfG Markus
Leave a comment:
-
hab oben jetzt doppelt escaped .. sprich es stimmt nun ..
das ampersand ( & ) zu escapen is unnötig ..
ergo funktioniert obiges mit copy&paste ..
var_export is wie print_r .. es wird bloß echter php code erzeugt, den man theoretisch weiterverwenden könnte ..
verwandt is auch var_dump .. allerdings bekommst da die stringlänge und den typ .. alles unnützes zeug
da alles in $arr[0] steckt hab ich auch nur das ausgeben lassen ..Last edited by Coragon Rivito; 04-03-2004, 10:45.
Leave a comment:
-
Doch noch eine Bitte, könntest du den RegeEx noch ohne [ php] Tags poste, da verschwinden die \.
was macht denn var_export? //php.net ist down
hab festgestellt print_r und var_export zeigen unterschiedliches an. Wie sieht der Inhalt denn nun genau aus?
MfG markus
Leave a comment:
-
-
warum nicht so ?
das einzige .. er findet und listet auch whitespace ..
dem war jetzt auf die schnelle nicht beizukommen
PHP Code:<?php
$search = 'hallo frau and mann or haus & klaue eins | muh seufz OR hmm NOT test';
preg_match_all ( '{(?:(?:and|AND|or|OR|not|NOT|\\||&)\\s+)?(?:[a-zA-Z0-9\\*\\?]+)}', $search, $arr );
print '<pre>';
var_export ( $arr[0] );
print '</pre>';
?>
PHP Code:array (
0 => 'hallo',
1 => 'frau',
2 => 'and mann',
3 => 'or haus',
4 => '& klaue',
5 => 'eins',
6 => '| muh',
7 => 'seufz',
8 => 'OR hmm',
9 => 'NOT test',
)
EDIT:
leerzeichen fand er wegen der regex für das einzelne wort .. da war ein * dahinter .. durch + ersettz ..Last edited by Coragon Rivito; 04-03-2004, 10:44.
Leave a comment:
-
Klappt aber immernoch nicht so wie es soll. Habs mit deiner Methode versucht, des hat aber überhaupt nicht geklappt.
echo $search = "hallo frau and mann or haus & klaue eins";
preg_match_all("![^ ]+[a-zA-Z0-9]*!",$search, $arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
Ergebnis:PHP Code:Array
(
[0] => Array
(
[0] => hallo
[1] => frau
[2] => and
[3] => mann
[4] => or
[5] => haus
[6] => &
[7] => klaue
[8] => eins
)
)
hin
MfG MarkusLast edited by markusschmitt; 04-03-2004, 10:14.
Leave a comment:
-
Re: preg_match_all Problem
Beim 2ten, also ein array für (hallo, frau, eins) bekomm ich nun nach ca. 2 Stunden immernoch nicht gebacken. Könnt ihr mir helfen?#
(?<!xxx)
Negiert das angegebene Pattern und wirkt sich auf das nachfolgende aus.
Beispiel: /(?<!text1)text2/
Trifft auf eine Zeichenkette zu, die "text2" enthält, aber nur, wenn "text1" nicht davor kommt.
Leave a comment:
-
preg_match_all Problem
Tagchen also ich habe einen String: "hallo frau and mann or haus & klaue eins".
Was ich jetzt brauche sind alle "and Wort", "or Wort", "not Wort".... (also and mann, or haus, & klaue) sowie jedes Wort bei dem kein and, or, not... davorsteht (hallo, frau, eins)
Erstes hatt ich nach ca. 30 min gelöst.
echo $search = "hallo frau and mann or haus & klaue eins";
preg_match_all("!(and|AND|or|OR|not|NOT|\||\&)[ ]+[a-zA-Z0-9] *!",$search, $arr); // die \ vor | und & hätten mir die [p hp] tags gelöscht.
echo "<pre>";
print_r($arr);
echo "</pre>";
Ergebnis:
PHP Code:Array
(
[0] => Array
(
[0] => and mann
[1] => or haus
[2] => & klaue
)
[1] => Array
(
[0] => and
[1] => or
[2] => &
)
)
MfG MarkusTags: None
Leave a comment: