این یکی معجزه می کنه :

$subject = `curl http://google.com/`;
$reg_exp = "/href.*?\"(?.*?)\/";
preg_match_all($reg_exp, $subject, $matches);

var_dump($matches);

حالا مرحله به مرحله پیش میرم:

curl http://google.com

cURL یک برنامه یونیکسی فوق العاده کاربردی هست که همه توقعی می شه ازش داشت، اما اینجا فقط محتوای آدرس گوگل رو دانلود می کنه و در متغیر $subject  قرار میده.

?*.href

یعنی هر وقت به href  رسیدی از اون به بعد اونقدر ادامه بده تا برسی به اولین کاراکتر بعد از علامت سوال.

/”\(?*.<href>?)”\

حالا می بینه که کاراکتر بعد از علامت سوال ” هست اینجا صبر می کنه، به پرانتز نگاه می کنه، می فهمه که باید یک گروه تشکیل بده پس علامت سوال بعدی بهش میگه که اسمشو بزار href و هرچی توش بود رو برای گروه برگردون و برو جلو تا برسی به اولین ” و بعد هم تمام.

preg_match_all

یک تابع پی اچ پی هست که برای استفاده از عبارات منظم استفاده می شه از یک طرف عبارت منظم و رشته رو می گیره از طرفی در یک متغیر به صورت آرایه ذخیره می کنه.

var_dump

یک تابع برای نشان دادن ساختار یک متغیر هست.