Autor | Zpráva | ||
---|---|---|---|
Satizi Profil * |
#1 · Zasláno: 17. 5. 2012, 01:29:44 · Upravil/a: Moderátor (editace znemožněna) 17. 5. 2012, 14:25:01
Zdravim, potreboval bych od Vas poradit.
Mam eshop, ze ktereho chci exportovat priblizne 1.000 emailovych adres. Na tyto adresy chci rozesilat newslettery z obchodu. Problem je, ze mi DB vyplivla emaily ve tvaru: 22145|adresa@domena.cz Cislo pred emailem je id zakaznika Potreboval bych, jestli byste byli tak hodni, skript v PHP, ktery by mi odstranil ty cisla a | pred samotnou adresou a zanechal pouze emailovou adresu. Podotykam, ze mi to DB exportovala do .txt souboru, jinou moznost nemam. Cili mam pod sebou cca 1.000 emailu, u kterych potrebuju zanechat pouze emailovou adresu. Z 22145|adresa@domena.cz potrebuji, aby mi zustala jen samotna emailova adresa, cili adresa@domena.cz . Predem Vam mnohokrat dekuji. Zkousel jsem to pres regularni vyrazy, ale je to nad me sily. Moderátor Joker: Titulek „Regularni vyrazy?“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
Majkl578 Profil |
#2 · Zasláno: 17. 5. 2012, 01:40:36
Ono by to šlo i bez regulárů, pokud to máš jako seznam e-mailů na řádcích, rozdělit podle řádků a pak podle pajpy (svislítko) (pomocí explode).
Pomocí reguláru, to můžeš udělat např. takto: $s = '22145|adresa@domena.cz 22145|adresa@domena.cz 22145|adresa@domena.cz'; $s = preg_replace('~^\d+\|~m', '', $s); |
||
Satizi Profil * |
#3 · Zasláno: 17. 5. 2012, 01:42:45
Jeste chci doplnit, ze cisel pred adresou je vzdy 6 a proste nemuzu prijit na to jak to odstranit i se svislítkem..... :-/
Majkle, jednodušší způsob by nebyl? Nějak načíst .txt soubor a vzít to jedním vrzem? |
||
Majkl578 Profil |
#4 · Zasláno: 17. 5. 2012, 02:02:59
Ono je jedno odkud ty data jsou předem vytažena, to nahrazení se dá použít obecně. Nahradit v souboru by pak šlo jednoduše takto:
$file = '/tmp/mails'; // soubor s maily file_put_contents($file, preg_replace('~^\d+\|~m', '', file_get_contents($file))); Případně by to šlo snadno i v linuxovém shellu: $ sed -i s/^[0-9]*\|//gm /tmp/mails |
||
peta Profil |
$row = '22145|22145|22145|22145|22145|22145|adresa@domena.cz'; $col = explode('|',$row); echo $col[6].', '; $row = '22145|adresa@domena.cz'; $col = explode('|',$row); echo $col[1].', '; |
||
Joker Profil |
#6 · Zasláno: 17. 5. 2012, 14:27:19
|
||
greeny Profil |
#7 · Zasláno: 17. 5. 2012, 18:14:31
Já bych použil variantu explode...
$soubor=file_get_contents("cesta_k_souboru.txt"); //nactu soubor $radky=explode(chr(13), $soubor); //rozdelim ho na jednotlive radky ( chr(13) je vlastne novy radek ) foreach($radky as $radek) // cyklus projizdi cele pole jedno po druhem { $casti=explode("|", $radek); // radek se rozdeli na 2 casti pres svislitko // zde nekam ulozim emailovou adresu, ktera je v promenne $casti[1] // napr vlozeni do databaze: MySQL_Query("INSERT INTO emails (email) VALUES ('".$casti[1]."')"); // nebo pripsani do retezce s mailama, ktery se nakonci ulozi do souboru pomoci file_put_contents(); $soubor.=$casti[1].chr(13); } |
||
Časová prodleva: 12 let
|
0