PDA

View Full Version : مشکل با انتقال preg_match توسط متغییر!



ali712k
یک شنبه 07 آذر 1389, 17:25 عصر
سلام و درود به عزیزان جان

یه مشکل عجیب برام پیش اومده!
ببینید :

preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $weblink->fullimage, $preimage);
$this->assignRef('preimage', $preimage);

خب اینجا دوخط داریم که خط اول رشته اول را در رشته دوم جستجو میکند و اگر مشابه اون یافت در رشته سوم یه آرایه از یافته ها میسازد، خط دوم هم که یه انتسابگر جوملاست که آرایه یافت ها رو به مرحله بعد منتقل میکنه (خط دوم مهم نیست).
حالا مشکل اینه که تا وقتی رشته مورد نظری که میخایم داخلش جستجو کنیم را عینه کد بالا با متغییر به تابع بدیم تابع هیچی پیدا نمیکنه و رشته سوم را خالی برمیگدونه!

اما اگر همون رشته منظور را مستقیما عینه زیر:


preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', '<p><img src="images/weblinksplus/apply_f2.png" border="0" /></p>', $preimage);


به تابع بدم تابع کارشو درست انجام میده و src تصویر موجود در رشته را در آرایه برمیگرداند!

راه ها و احتمالات مختلفی را چک کردم اما انگار نه انگار!
در حالت اول متغییر را همون کنار echo میکنم و و صحیح و سالم چاپ میشه!
نوع متغییر ورودی هم به چند نوع تغییر دادم ولی جواب نداد.
اسکریپت هم یه کامپوننت برای جوملاست.
چرا وقتی رشته را با متغییر به تابع میدم اینطوری میشه ؟ اساتید و آیات برنامه نویس کرم نمایید :خجالت:

funpatogh
یک شنبه 07 آذر 1389, 19:41 عصر
شما وقتی این متغییر $weblink->fullimage رو چاپ میکنید دقیقا اینو بر میگردونه؟


<p><img src="images/weblinksplus/apply_f2.png" border="0" /></p>


بعد اینو


'/< *img[^>]*src *= *["\']?([^"\']*)/i'

به این تغییر بده ببین جواب میدهد


'/< *img[^>]*src *= *["\']?([^"\']*)/si'