Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Textphrasen auslesen

Frage Entwicklung PHP

Mitglied: Maik87

Maik87 (Level 2) - Jetzt verbinden

01.07.2013 um 14:10 Uhr, 1633 Aufrufe, 16 Kommentare, 3 Danke

Hallo Gemeinde,

ich benötige mal einen kleinen Denkanstoß:

Ich möchte einen Text durchsuchen und bestimmte Stellen/Wörter in Variablen speichern.

Beispielsweise soll der Name der angesprochenen Person gefunden werden:

"Sehr geehrter Herr <-NACHNAME->,"

Ich muss dem System also erzählen, dass es das, was zwischen "Sehr geehrter Herr " und "," steht, in eine Variable packen soll.

Könnt ihr mir ein Stichwort geben, in welche Richtung ich mich durchlesen muss? Ich steh grad echt vor der Wand...


Danke!!
Gruß
Maik87
Mitglied: dog
01.07.2013, aktualisiert um 14:18 Uhr
Könnt ihr mir ein Stichwort geben

Reguläre Ausdrücke

und wenn du es ernst meinst:
  • Chomsky-Hierarchie (speziell Typ 0 / 1)
  • Lexer & Parser
  • flex & bison
Bitte warten ..
Mitglied: Maik87
01.07.2013 um 14:19 Uhr
Zitat von dog:
Reguläre Ausdrücke
Danke!


und wenn du es ernst meinst:
  • Chomsky-Hierarchie
  • Lexer & Parser
  • flex & bison
Klingt umfangreich

Mir geht es nur darum, dass eine Webanwendung außer einer Emailschnittstelle nichts zu bieten hat und ich die Informationen aus den Email auslesen möchte. Diese sind immer gleich aufgebaut - ich muss nur an den richtigen Stellen lesen.
Bitte warten ..
Mitglied: SlainteMhath
01.07.2013 um 14:49 Uhr
Moin,

Diese sind immer gleich aufgebaut - ich muss nur an den richtigen Stellen lesen.
Dann kommst Du evtl. mit Zeilenzählen substr() und strpos() am schnellst ans Ziel

lg,
Slainte
Bitte warten ..
Mitglied: colinardo
01.07.2013, aktualisiert um 15:17 Uhr
Hallo Maik87,
hier ein Beispiel mit RegEx:
01.
$anrede = "Sehr geehrter Herr Meier,"
02.
preg_match_all('/Sehr geehrter? (Herr|Frau) (.*),/i',$anrede,$matches); 
03.
$name = $matches[2][0]; 
04.
echo $name;
Grüße Uwe
Bitte warten ..
Mitglied: Maik87
01.07.2013 um 15:21 Uhr
Super Uwe,

vielen Dank!!

Genau das habe ich gesucht - läuft prima.

Ich schau mal, ob ich das auf alle weitere umgebogen bekomme


Gruß
Maik87
Bitte warten ..
Mitglied: Maik87
01.07.2013, aktualisiert um 15:48 Uhr
Ich hänge schon

Habe dem Script die nächste Schwierigkeitsstufe gegeben - zwei Anreden:
01.
$anrede = "Sehr geehrter Herr Meier, Sehr geehrte Frau Schulz,"; 
02.
preg_match_all('/Sehr geehrter? (Herr|Frau) (.*),/i',$anrede,$matches); 
03.
$name = $matches[2][0]; 
04.
echo $name .'<br>';
Leider sieht die Ausgabe nun so aus:
01.
Meier, Sehr geehrte Frau Schulz,
Wie bringe ich ihm noch bei, dass bei dem Komma Schluss ist und alles, was danach kommt, mich nicht mehr interessiert?

Wie bekomme ich die zweite Anrede auch ausgelesen? Das Array beinhaltet nur den ersten Treffer. Ein nochmaliges Ausführen von preg_match_all liefert exakt das gleiche Ergebnis.



Edit:
01.
preg_match_all('/Sehr geehrter? (Herr|Frau) (.*),./i',$anrede,$matches);
Beendet das Auslesen nach dem Komma.

Bleibt nur noch der zweite Treffer
Bitte warten ..
Mitglied: colinardo
01.07.2013, aktualisiert um 16:28 Uhr
01.
$string = "Sehr geehrter Herr Meier, Sehr geehrte Frau Schulz,"
02.
preg_match_all('/Sehr geehrter? (Herr|Frau) (.*),/iU',$string,$matches); 
03.
echo "Bei einer Anrede Name = " . $matches[2][0] . <br>; 
04.
echo "Name 1 bei zwei Anreden = " . $matches[2][0] . "<br>"
05.
echo "Name 2 bei zwei Anreden = " . $matches[2][1] . "<br>";	 
06.
 
Bitte warten ..
Mitglied: dog
01.07.2013, aktualisiert um 16:01 Uhr
/Sehr geehrter? (Herr|Frau) (?<NAME1>[^,]*),$|Sehr geehrter? (Herr|Frau) (?<NAME1a>[^,]*), ?Sehr geehrter? (Herr|Frau) (?<NAME1b>.*),$/i

O_o

Psssst, Geheimtipp: Das Stichwort heißt ungreedy
Bitte warten ..
Mitglied: Maik87
01.07.2013 um 16:14 Uhr
Zitat von dog:
Psssst, Geheimtipp: Das Stichwort heißt ungreedy

DANKE!!!

01.
preg_match_all('/Sehr geehrter? (Herr|Frau) (.*),/iU',$anrede,$matches);
01.
print_r($matches[2]);
Alles drin
Bitte warten ..
Mitglied: Maik87
01.07.2013 um 16:28 Uhr
Kann mir jetzt noch jemand sagen, woran ich festmache, wieviele Dimensionen $matches haben wird?

01.
$anrede = "Sehr geehrter Herr Meier, sehr geehrte Frau Schulz, in Ihrem Schreiben vom 01.07.2013 teilten Sie uns mit..."; 
02.
preg_match_all('/Sehr geehrter? (Herr|Frau) (.*),/iU',$anrede,$matches);
Hier liegt mein gesuchter Wert in $matches[2][0].

01.
$anrede = "Sehr geehrter Herr Meier, sehr geehrte Frau Schulz, in Ihrem Schreiben vom 01.07.2013 teilten Sie uns mit..."; 
02.
preg_match_all('/Schreiben vom (.*) teilten/iU',$anrede,$matches);
Hier jedoch in $matches[1][0].
Bitte warten ..
Mitglied: colinardo
01.07.2013, aktualisiert um 16:34 Uhr
oben ist der erste Match bei (Herr|Frau) und unten ist dein Match der erste, weil erstes Klammerpaar.

bitte erst mal lesen:
http://de3.php.net/manual/de/function.preg-match-all.php

denke der Thread ist beantwortet...http://www.administrator.de/faq/32
merci
Bitte warten ..
Mitglied: dog
01.07.2013 um 16:36 Uhr
$matches[1][0].

Die erste Zahl ist die Capture Group:
0 = der ganze Match
1 = der inhalt vom 1. Klammerpaar ganz links
2 = usw.

Die zweite Zahl ist der Index des Treffers.

Sehr geehrter Herr Meier, sehr geehrte Frau Schulz
erzeugt 2 Treffer mit den Nummern 0 und 1.
Bitte warten ..
Mitglied: Maik87
01.07.2013 um 16:36 Uhr
Zitat von colinardo:
oben ist der erste Match bei (Herr|Frau) und unten ist dein Match der erste, weil erstes Klammerpaar.
Sprich ich muss die Klammern zählen, um die Dimension zu kennen?


Hab ich - aber entweder keine Lösung gefunden oder diese nicht richtig gedeutet
Bitte warten ..
Mitglied: Maik87
01.07.2013 um 16:38 Uhr
Zitat von dog:
0 = der ganze Match
1 = der inhalt vom 1. Klammerpaar ganz links
2 = usw.

Der hat gefehlt, DANKE!!


Die zweite Zahl ist der Index des Treffers.

> Sehr geehrter Herr Meier, sehr geehrte Frau Schulz
erzeugt 2 Treffer mit den Nummern 0 und 1.

Das hatte ich schon verstanden Ich suchte nur die Logik, wie die erste Dimension nummeriert ist.
Bitte warten ..
Mitglied: Maik87
02.07.2013 um 10:21 Uhr
Ich hänge wieder

Unzwar geht es gerade darum, eine Textphrase, welche sich über mehrere Zeilen erstreckt, auszulesen.

Ich bin inzwischen so weit:
01.
/Artikelbezeichnung: *(.*)\n/iU
Liest bis Zeilenende.


01.
/Artikelbezeichnung: *(.*)http/iU
Würde bis http lesen, wenn dieses in der gleichen Zeile steht. Es soll nun aber alle Zeilen lesen, bis es auf http stößt.

Wo ist der Trick?
Bitte warten ..
Mitglied: colinardo
02.07.2013, aktualisiert um 10:27 Uhr
Mit der Option s sollte der Punkt auch einen Zeilenumbruch(carriage return) mit einschließen
01.
/Artikelbezeichnung: *(.*)http/isU
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Exchange Server
Kalenderberechtigungen auslesen
gelöst Frage von garciamExchange Server8 Kommentare

Hallo Ich müsste von allen Kalendern die Standard-Berechtigung auslesen können und in eine CSV-Datei exportieren. Folgendes Script habe ich ...

Pascal und Delphi
Mausposition auslesen
gelöst Frage von AnkhMorporkPascal und Delphi11 Kommentare

Hallo Experts, vielleicht kann mich ein Pascal-Kundiger in die richtige Richtung schupsen. Habe wie ein Besengter gegoogelt, aber bewege ...

VB for Applications
Autofiltereinstellungen auslesen
gelöst Frage von chef1568VB for Applications9 Kommentare

Hallo, ich habe derzeit ein Problem mit dem Auslesen eines Autofilters. Hier habe ich das Problem dass, sobald mehr ...

Batch & Shell
Partitionen auslesen
gelöst Frage von TlBERlUSBatch & Shell2 Kommentare

Hi Zusammen, ich probiere mich momentan an der Powershell, stoße momentan leider auf das Problem, dass sich mein Skript ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 59 MinutenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 4 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 4 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 8 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement18 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...