PDA

View Full Version : عبارات با قاعده



bbpsoft
پنج شنبه 29 اسفند 1392, 01:09 صبح
یک دستور replace میخوام که تو یک فایل html بگرده و هر چی img هست رو پیدا کنه و بعد url اونو برگردونه و بعد به جای اون یک آدرس جدیدی رو داخل url قبلی بزاره.




مثال:
تو فایل یک img هست به صورت زیر:
<img src="b.jpg">


حالا میخوایم آدرس اونو تغییر بدیم

<img src="a.jpg">

desatir7316
پنج شنبه 29 اسفند 1392, 01:23 صبح
حالا حتما عبارات با قاعده باشه؟!!
با fopen فایلتو باز کن بعد با str_replace تغیرات رو انجام بده

SadeghPro19
پنج شنبه 29 اسفند 1392, 01:56 صبح
$path = 'http://url';
$exp = array('/<img(.*?)src=(?:")(http|https)\:\/\/([^"]+?)(?:")/i', '/<img(.*?)src=(?:")([^"]+?)#(?:")/i', '/<img(.*?)src="(.*?)"/', '/<img(.*?)src=(?:\@)([^"]+?)(?:\@)/i');
$sub = array('<img$1src=@$2://$3@', '<img$1src=@$2@', '<img$1src="' . $path . '$2"', '<img$1src="$2"');
preg_replace($exp, $sub, $html);

maysam.m
پنج شنبه 29 اسفند 1392, 01:59 صبح
اینم عیدی منبه شما :چشمک: (تست شده):



<?php$html = file_get_contents('http://upcity.ir');

preg_match_all('/<img[^>]*src="([^"]*)".*?[\/]?>/is',$html,$match);

print_r($match);?>

bbpsoft
پنج شنبه 29 اسفند 1392, 18:09 عصر
اینم عیدی منبه شما :چشمک: (تست شده):



<?php$html = file_get_contents('http://upcity.ir');

preg_match_all('/<img[^>]*src="([^"]*)".*?[\/]?>/is',$html,$match);

print_r($match);?>


خب تا اینجا میاد همه عکس ها را پیدا میکنه.
برای جایگزین کردن باید چکار کنم؟

SadeghPro19
پنج شنبه 29 اسفند 1392, 18:25 عصر
برای جایگزین کردن میتونید از کدی که در بالا قرار دادم استفاده کنید.

bbpsoft
پنج شنبه 29 اسفند 1392, 18:30 عصر
این عکس ها به صورت زیر هستند:
<img src="/files/fa/news/1392/11/29/99729_153.jpg>
که من میخوام به صورت زیر بشه:
<img src="www.BehnamBahrami.ir/files/fa/news/1392/11/29/99729_153.jpg>


اگه کسی دقیق میدونه بگه.
ممنون از همه

maysam.m
جمعه 01 فروردین 1393, 02:14 صبح
خب تا اینجا میاد همه عکس ها را پیدا میکنه.
برای جایگزین کردن باید چکار کنم؟

میتونی از تابع preg_replace f به جای preg_match_all به این شکل استفاده کنی:



$html = file_get_contents('http://upcity.ir');

$new_data = preg_replace('/<img[^>]*src="([^"]*)".*?[\/]?>/is','new_url.jpg',$html);

echo $new_data;





از preg_replace_callback هم میشه استفاده کرد

MMSHFE
جمعه 01 فروردین 1393, 11:47 صبح
دوستان اینقدر RegExp رو پیچیده نیاز نیست استفاده کنید:

echo preg_replace('#<img(.*?)src="(.*?)"(.*?)>#is', '<img$1src="www.BehnamBahrami.ir$2"$3>', $html);