• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
پاک کردن ایمیلها
#1
دوستان فرض کنید ما داخل فایل تکست 10 تا ایمیل داریم که شامل ایمیل یاهو و جیمیل هستش . اسکریپتی هستش که بشه ایمیلهای یاهو رو پاک کرد و فقط جیمیل بمونه ؟
  پاسخ
تشکر شده توسط :
#2
فرشاد جان میشه نحوه قرار گرفتنشون رو هم بگی . اینجوری بهتر میتونم کمک کنم !
الان راهی که به ذهنم میرسه اینه که اول ایمیل ها رو بتونی جدا کنی ، بعدش با pregmatch یا چیز دیگه چک کنی یاهو بوده یا جای دیگه !
کد تشخیص ایمیل هم هست . سرچ کنی پیدا میکنی...
از همون برای هر 2 کار استفاده کن.
اول تشخیص ایمیل ها ، بعدش یکم تغییرش بده که فقط ایمیل های یاهو رو تشخیص بده ...
  پاسخ
تشکر شده توسط : Padideh
#3
داداش علیرضا دقیقا همون چیزی که شما گفتی ایمیلهای یاهو رو از notepad پاک کنه و در واقع اول فایل رو برای خوندن باز کنه بعد تشخص بده و بعدشم پاک کنه .

تابع تشخص چیه تو php ؟
  پاسخ
تشکر شده توسط :
#4
این کد رو ببین دستت میاد چجوریه !
کد پی‌اچ‌پی:
<?php

$str
="in yek mail az gmail [email protected] va in yek mail az yahoo [email protected] k too yek matn hastan";
$mails=extractEmail($str);

if(
count($mails[0])){
    echo(
'Mail Find :<br />');
    
print_r($mails[0]);
}else{
    echo(
'Not Found Any Email');
}

function 
extractEmail($string)
{
$regEx "/([\s]*)[\._a-zA-Z0-9-][email protected][\._a-zA-Z0-9-]+/i";
preg_match_all($regEx$string$emails);

return 
$emails;


تمام ایمیل هارو جدا میکنه !
حالا اگه بخوای تشخیص بدی ایمیل یاهو هستش یا نه اینجوری بنویس :

کد پی‌اچ‌پی:
$regEx "/([\s]*)[\._a-zA-Z0-9-][email protected][yahoo.com]+/i"

در خدمتیم فرشاد جان Heart
  پاسخ
تشکر شده توسط : Padideh
#5
علیرضا خروجی باید یه طوری باشه که کپی بگیریم بریزیم تو notepad یعنی فقط ایمیل باشه الان این کد شما کاری که انجام میده دقیقا notepad ++ انجام میده به عکس زیر نگاه کن .

[عکس: 1310022071.jpg]

در حقیقت خروجی باید فقط ایمیل یا جیمیل باشه که بشه کپی گرفت
آقا مشکل با یه دستور تو خود ویندوز با تابع به نام findstr حل شد که میشه این

کد:
type 1.txt | findstr /I "@gmail.com"

حالا چطوری میشه بین هر ایمیل یه , گذاشت ؟ اسم تابعش چی بود ؟ preg_replace() بود ؟
  پاسخ
تشکر شده توسط :
#6
کدی که من گذاشتم تمام ایمیل ها توی آرایه ذخیره میشه دیگه !!! از آرایه نمیتونی بخونی یعنی ؟ مشکلتو نفهمیدم !
اون سوال اول من هم این بود که این فایل متنی که داری توش همینجوری متن نوشته و لا به لای متن ایمیل ها هستن یا فقط ایمیل ؟

ببین با همون کد خودم :
اول متن کامل رو دارم ( فرض کنیم با fread از فایل خوندم ) !
حالا ایمیل ها رو جدا میکنم !
کد پی‌اچ‌پی:
$mails=extractEmail($str); 

حالا اگه فقط جیمیل ها رو این جوری میخوای :
این کد این کارو میکنه : ( میتونه بهینه تر هم باشه . من سریع نوشتم که فقط جواب بگیرم )

کد پی‌اچ‌پی:
$resault='';
if(
count($mails[0])){
    foreach(
$mails[0] as $mail){        
        
$mailtype=substr($mail,strlen($mail)-9);
        if(
$mailtype=='Gmail.com' || $mailtype=='gmail.com')
            
$resault.=$mail.',';
    }
}    
else{
    
$resault='Not Found Any Email';
}
echo(
$resault); 

اون جایگزینی هم با str_replace میتونی انجام بدی :
کد پی‌اچ‌پی:
str_replace('FIND','REPLACE',$resource
  پاسخ
تشکر شده توسط : Padideh
#7
فایل فقط ایمیل ها هستش متنی وجود نداره فقط ایمیل هستش
  پاسخ
تشکر شده توسط :
#8
برای مثالی که فرستادی :

این قسمت رو :
کد پی‌اچ‌پی:
$value =str_replace('@gmail.com ',',',$value); 
ایجوری بنویس :
کد پی‌اچ‌پی:
$value =str_replace('@gmail.com ','@gmail.com,',$value); 
البته یه کاما هم بعد از آخری میذاره ک زیاد مهم نیست !

#: البته این حال کلی بود که اگه متنت دقیقا همین باشه ( یعنی بعد از هر ایمیل فقط یه فاصله ( space ) باشه ) میتونی اینجوری بنویسی :
کد پی‌اچ‌پی:
$value =str_replace(' ',',',$value); 

کار این تابع خیلی آسونه !
اولین آرگومانی که بهش میدی رو پیدا میکنه و بجاش آرگومان دوم رو میذاره ( یعنی کاملا جایگزین میکنه ، نــه اینکه بهش اضافه کنه )...
  پاسخ
تشکر شده توسط : Padideh
#9
آقا مشکل حل شد فقط اون پیغام خصوصی رو ببین نمیدونم چرا ارور میده Heart

الان یه مشکل دیگه هم به وجود اومده در واقع مشکل کاما حل شد اما بعد از هر کاما یه فاصله میندازه
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان