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

Textstellen herrausfiltern

Status
Für weitere Antworten geschlossen.

Darki

Neues Mitglied
also ich habe folgendes prob: für ne art browsergame mache ich scripten zur unterstüzung

und jetzt will ich zb dass jemand einfach nur in ein textfeld die ganze statusmeldung reinkopiert

und dann automatisch im text verschiedene stellen rausgefiltert werden, also zb dass nur der 1. teil mit dem datum rausgefiltert wird und dann der letzte teil

hoffe da kann man was machen mit arrays oder so
danke im vorraus

mfg darki ^^
 
Werbung:
das ist keine leichte und unbdingt angenehme angelegenheit. für solche sachen muß man einen parser schreiben. der dann nach festgelegten schematas den text untersucht.

ein schema wäre z.B. das ich jedes Attribut mit einem ; trenne und das als erstes der name kommt, dann die strasse und zu letzt die PLZ. Das würde dann so aussehen.

Code:
Michael Mustermann;Phantasiestr. 7;12345;
Marta Müller;Berlinerstr. 22;14123;
Dafür könnte man nun einen Parser schreiben der von Position 0 des strings nach einem ; sucht. danach kopierst du den string von pos 0 bis pos ;-1 in einen neuen und suchst dann ab pos ;+1 weiter nach dem nächsten ;, usw

für das suchen und trennen von strings gibt es funktionen in php.

hier ist eine funktions übersicht für strings
http://de3.php.net/manual/de/ref.strings.php
 
Code:
07.12.2004 01:18:06
Die Flotte Transen hat 33354 Einheiten Silizium am Planeten arbenkrasniqi erbeutet

so in etwa sieht eine statusmeldung aus

hab jetzt gerade leider keine zeit mir die strings genauer anzusehen aber wäre es rein theoretisch möglich zb die 10 Zeichen als datum zu speichern, die nächsten 9 als uhrzeit und dann suche ich speziell nach dem wort "hat" geh eine position weiter und lasse die nächsten zeichen als zahl speichern bins wieder ein " " kommt und dass selbe mache ich dann mit "Planeten"?

wäre dass rein theoretisch möglich dass halbwegs umzusetzten?

mfg darki
 
Werbung:
wenn das die user selbst eingeben können, ist doch klar das gecheatet wird. wer hindert den die leute daran die zahl zu verändern? zu deiner frage, klar geht das!

als beispiel die ersten 10 zeichen für das datum und 8 zeichen für die Uhrzeit
[php:1:31f46e8235]<?
$eingabe = "07.12.2004 01:18:06\nDie Flotte Transen hat 33354 Einheiten Silizium am Planeten arbenkrasniqi erbeutet";

$datum = substr($eingabe, 0, 10);
$zeit = substr($eingabe, 11, 8);

// Die Zahl zu suchen wird etwas heikler, da sie ja nicht immer 5 stellig sein wird.
// Aus diesem Grund suchen wir nach 'hat' und 'Einheiten' und dazwischen liegt dann die Zahl.
// Problem: es darf in dem string vorher kein 'hat' vorkommen. Kommt nicht
// sagst du jetzt vieleicht, aber was ist mit 'Die Flotte Barminhat hat'?
// Schon ist der Parser zum scheitern verurteilt. Einzige kleine Vorsichtsmassnahme
// die man treffen kann ist nach ' hat ' zu suchen. d.h. inklusive der Spaces

$start_pos = strpos($eingabe," hat ");
$start_pos += strlen(" hat ");
$end_pos = strpos($eingabe," Einheiten");

$einheiten = substr($einheiten,$start_pos,$end_pos-$start_pos);

// das mit dem Planeten solltest du jetzt selbst hinbekommen, einfach die
// letzten vier zeilen kopieren und anpassen.
?>[/php:1:31f46e8235]

So, das war eine Ausnahme! Lass es dir nicht zur Gewohnheit werden, dir den Code schreiben zu lassen. Wenn dir solche Sachen wichtig sind, dann ließ die Doku die man dir ans Herz legt. In meinem Link weiter oben, war das was ich gemacht habe, komplett erklärt.

werde absofort, ausser bei speziellen fragen nur noch lösungswege aber nicht den code selbst bereitstellen. also stell deine fragen, aber bitte mit einer größeren bereitschaft auch dokus zu lesen.
 
viieeelen dank :D

aber du hättest mir den code nicht schreiben müssen, war grad im stress und wollt nur schnell fragen ob das möglich wäre
mit einem einfachen "ja" wärs auch gegangen dann hätt ich mich über die doku gestürzt

jep es ist klar und werde auch nie verlangen dass man mir den code schreibt
so faul bin ich nicht

mfg darki ^^
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben