Hej,
Min chef vill att jag ska plocka ur data ur c:a 1000 st gammla text filer. Och jag gillar PHP sådärför har jag gjort lite däri.=)
Datat som ska plockas ut är datum och påbörjas med (exempelvis:)
Faktura datum: ... 13 oktober, 1996
Och jag har lyckats läsa in text filer i en fin loop och spara undan dem i en sträng, men jag undrar om det finns någe bra sätt att leta efter alla dessa ställen och parsa ut just datumen som börjar med denna sträng så jag kan parsa om dem till en timestamp med strtotime och sedan spara undan dem på ett mer elegant sätt?=)...
Någon som vet hur man får fram just den informationen?
Mvh
-- Rincewind..
Jo, jag hittade den nyss också, men hur skriver jag preggen?
metalboyMedlem sedan jan. 2005953 inlägg Eftersom du har skrivit ... mellan "Faktura datum:" och "13 oktober, 1996" så antar jag att det finns någon text där som du inte är intresserad av. Är det korrekt?
preg_match_all('/Faktura datum: .*? (\d{1,2} .*?, \d{4})/is', $text, $matches);
echo '<pre>', print_r($matches, 1), '</pre>';
hohoho.. Tack.. läckert!!
En fråga dock...
'/Faktura datum: .*? (\d{1,2} .*?, \d{4})/is'
Vad gör \d och .*?
och /is
=) Försöker lära mig lite=)
metalboyMedlem sedan jan. 2005953 inlägg . matchar vilket tecken som helst (nästan iaf :))
* matchar tecknet innan 0 gånger eller fler
? matchar tecknet innan 0 eller 1 gång
.*? betyder matcha vilket tecken som helst 0 gånger eller fler, men ta så lite som möjligt... typ. Visar med ett exempel:
$text = 'Lite text. <b>Fet text</b>. <i>Kursiv text</i>. <b>Mer fet text</b>';
preg_match_all('/<b>(.*?)<\/b>/', $text, $matches1);
preg_match_all('/<b>(.*)<\/b>/', $text, $matches2);
echo '<pre>$matches1 = ', print_r($matches1, 1), '
$matches2 = ', print_r($matches2, 1), '</pre>';
Hoppas att du med det exemplet ser skillnaden mellan .* och .*?
\d matchar en siffra (0-9)
/i betyder Case Insensitive
/s gör så att . även matchar radbrytningar
Wow.. Tack metalboy för det mest suveräna svaret jag sett på länge... Tackar..
Du har inte lust att hjälpa mig med en till preg? Om man ska hitta en email adress i en stor text massa... OCH att den rad som emailadressen finns på även ska innehålla ett annat ord?
Exempel:
Kontakt:... email@domain.com
Kämpat med det en stund, men totalt misslyckats ..=(