PDA

View Full Version : پیداکردن تمام لینکهای موجود در متن



فرزند کوروش
سه شنبه 09 دی 1393, 19:27 عصر
با سلام
دوسآخر این عبارات باقاغده! رو یاد نگرفتم :D
فرض کنید یه متنی داریم که بین نوشته هاش لینک قرارداده شده
من کدی میخام که این لینکها رو پیدا کنه و با لینک خودم جایگزین کنم
فرض کنید این متنه


salam in <a href='google.com'>link1</a> test ast az in <a href='http://yahoo.com'>link2</a> vared shavad

تبدیل شود به


salam in <a href='mysite.com?get=sjdhd&url=google.com'>link1</a> test ast az in <a href='mysite.com?get=bbajd&url=http://yahoo.com'>link2</a> vared shavad


کدی که الان دارم اینه:

function replaceHref($html, $replaceStr)
{
$match = array();
$url = preg_match_all('/<a [^>]*href="(.+)"/', $html, $match);
if(count($match))
{
for($j=0; $j<count($match); $j++)
{
$html = str_replace($match[1][$j], $replaceStr.($match[1][$j]), $html);
}
}
return $html;
}

که این کد یکی دو تا لینک رو فقط تبدیل میکنه
لطفا حتما راهنمایی کنید :D
ممنونم

bagherok
سه شنبه 09 دی 1393, 19:56 عصر
<?php
$string = "<p>Please <a href='http://example.com'>click here</a> to go to <a href='http://example.com'>the site</a></p>
salam in <a href='google.com'>link1</a> test ast az in <a href='http://yahoo.com'>link2</a> vared shavad";
$newurl = 'mysite.com?get=sjdhd&url=$1';
$pattern = "/((?<=href=(\"|'))[^\"']+(?=(\"|')))/";
$newstring = preg_replace($pattern,$newurl,$string);
echo $string;
echo $newstring;
?>

فرزند کوروش
سه شنبه 09 دی 1393, 20:06 عصر
ممنونم.
بیشتر لینکها رو درست کرد ولی باز چند تاش نشد!!:(

یزره بیشتر ور رفتم باهاش این لینکو برمیگردونه

http://127.0.0.1/email/user//api/mailclick.php?m=xxxx&key=debe236f3c30658190a8fe363a2b5cc0&url=
که میبینید جلوی url خالیه که باید لینک اصلی قرار بگیره

bagherok
سه شنبه 09 دی 1393, 20:09 عصر
ممنونم.
بیشتر لینکها رو درست کرد ولی باز چند تاش نشد!!:(

اگه امکانش هست همون تکست رو بذارید اینجا...

فرزند کوروش
سه شنبه 09 دی 1393, 20:12 عصر
پستم رو ویرایش کردن. مشکل اینه ک اون تکس متغیر هست
حتی ممکنه یه قالب کامل html بشه

bagherok
سه شنبه 09 دی 1393, 20:45 عصر
حالا چی!:متعجب:

<?php
$string =file_get_contents("http://barnamenevis.org/showthread.php?481162-%D9%BE%DB%8C%D8%AF%D8%A7%DA%A9%D8%B1%D8%AF%D9%86-%D8%AA%D9%85%D8%A7%D9%85-%D9%84%DB%8C%D9%86%DA%A9%D9%87%D8%A7%DB%8C-%D9%85%D9%88%D8%AC%D9%88%D8%AF-%D8%AF%D8%B1-%D9%85%D8%AA%D9%86");

$text_contents = explode("\n", $string);
$newurl = 'mysite.com?get=sjdhd&url=$1';
$pattern = "/((?<=href=(\"|'))[^\"|']+(?=(\"|')))/s";
$newstring = preg_replace($pattern,$newurl,$string);
echo $newstring;
?>

فرزند کوروش
سه شنبه 09 دی 1393, 20:52 عصر
حل شد.
خدا خیرت بده
اینم کد

function replaceHref($html, $replaceStr)
{
$newurl = 'mysite.com?get=sjdhd&url=$1';
$pattern = "/((?<=href=(\"|'))[^\"|']+(?=(\"|')))/s";
$newstring = preg_replace($pattern,$replaceStr,$html);
return $newstring;
}
مشکلم فقط همین $1 بود :D
بازم دستت درد نکنه