Regex-Hilfe
Pit Stop
- php
0 Texter mit x0 Pit Stop0 bleicher0 Texter mit x0 Pit Stop
0 Gunnar Bittersmann
Hi zusammen,
ich bräuchte mal Hilfe bei einem regulären Ausdruck.
Da es sich dabei nicht wirklich um eine meiner Stärken handelt hoffe ich auf Unterstützung:
ich habe mehrere Teile in einer textDatei, die folgendermassen aussehen:
@markierung = blablabla:
nach diesem Teil und vor diesem Teil folgen unterschiedliche stringzusammensetzungen ohne klares Muster.
Ich hätte nun gerne alle 'blablabla'-Strings der Textdatei ausgeschnitten
das kann ich ja sicherlich über preg_match_all erledigen...
Jedoch fehlt mir der Ausdruck...
danke für die Hilfe
Pit
ich habe mehrere Teile in einer textDatei, die folgendermassen aussehen:
@markierung = blablabla:
Heißt das, es kommt ein @, gefolgt von einem bekannten Namen gefolgt von Leerzeichen, Istgleich und Leerzeichen, gefolgt von einer Zeichenfolge ohne Leerzeichen? Dann brauchst Du kein preg_match.
Kommt das @ auch noch anderweitig vor?
hi,
ja, genauso siehts aus.
das @ kommt allerdings noch um einiges öfter vor, da mehrere Markierungen so gekennzeichnet sind.
wieso brauch ich da kein preg_match?
danke, gruß pit
Grüße
wieso brauch ich da kein preg_match?
ist die gesuchte zeichenfolge konstant, sind regular-expressions etwas übertrieben - du kannst stringfunktionen verwenden?
MFG
bleicher
das @ kommt allerdings noch um einiges öfter vor, da mehrere Markierungen so gekennzeichnet sind.
Das es um mehrere Markierungen geht, hast du schon gesagt. Ich fragte, ob das @ auch anderweitig vorkommen kann, also auch woanders als vor "markierung". Das ist aber auch nicht wichtig, da der Rest zutrifft.
wieso brauch ich da kein preg_match?
Wie bleicher schon schreibt, kannst Du nach "@markierung = " und nach dem nächsten Leerzeichen danach suchen und denn gesuchten string so extrahieren. Geh mal in die selfhtml-Forenübersicht, drücke Strg + f, gib das Wort Komma ein und drücke Enter.
oh gott...
stand vollkommen auf dem Schlauch.
ich hatte bis dato alles über diverse String-funktionen erledigt.
Bei dem Punkt war ich dann irgendwie der Meinung, dass es so nicht funktioniert.
hier die Lösung, falls einer auch mal auf dem Schlauch steht:
$allMarker = strposall($content,'@MARKIERUNG= ');
$markerArr= array();
foreach($allMarker as $markervalues)
{
$marker= substr($content,$markervalues+7,30);
$doublepointPos = strpos($marker,':');
$marker= substr($marker,0,$doublepointPos);
array_push($markerArr,$marker);
}
$markerArr= array_unique($markerArr);
die Funktion strposall() sucht alle Positionen einer Zeichenkette und schreibt sie in ein Array.
danke, gruß Pit
Wenn Du Strings die länger als 29?30 Zeichen sind nicht haben willst, geht das so. Innerhalb foreach würde sonst auch folgendes funktionieren:
$marker= substr($content, $markervalues+7, strpos($content, ':', $markervalues+7)-($markervalues+7));
Oder gleich in der Art:
$start = strpos($content, '@MARKIERUNG= ');
while ($start !== false) {
$ende = strpos($data, ':', $start + 7);
if ($ende !== false) {
$laenge = $ende - ($start + 7);
... = substr($data, $start + 7, $laenge); // was auch immer
$start = strpos($content, '@MARKIERUNG= ', $ende);
...
} else {
$start = fasle;
}
}
@@Pit Stop:
nuqneH
@markierung = blablabla:
[…]
Ich hätte nun gerne alle 'blablabla'-Strings der Textdatei ausgeschnitten
Du suchst also nach http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title='@'
gefolgt von <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=beliebig vielen (min 1)> <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=Zeichen außer '='>
gefolgt von <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=beliebig viel> http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=Whitespace
gefolgt von <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichenketten@title=beliebig vielen (min 1)> <http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen@title=Zeichen außer ':'>, die du dir http://de.selfhtml.org/perl/sprache/regexpr.htm#merken@title=merken willst,
und davon <http://de.selfhtml.org/perl/sprache/regexpr.htm#flags@title=alle Vorkommen>.
Qapla'
Gunnar