استفاده ترکیبی از جاوا اسکریپت (JavaScript) و PHP
همان طور که می دانیم جاوا اسکریپت (JavaScript) به عنوان یک زبان اسکریپت نویسی سمت کاربر و قابل اجرا در مرورگرها به خودی خود فواید و کاربردهای زیادی در صفحات وب دارد و تقریبا تمام برنامه نویسان و توسعه دهنده گان از آن استفاده می کنند، اما در کنار این کاربردها مواردی پیش می آید که بخواهیم از قدرت و قابلیت های آن برای نمایش محتوای داینامیک سمت سرور و به طور خاص در تعامل و ترکیب با PHP استفاده کنیم، این شیوه یکی از معمول ترین روش هایی است که بیشتر سایت های خدمات دهنده در زمینه ابزارهای وبلاگ نویسی برای کوتاه کردن کدهای نهایی و خیلی فواید دیگر از آن استفاده می کنند، از این رو و به جهت اینکه پرسش های زیادی از طرف کاربران در این خصوص مطرح می شود، قصد داریم این آموزش را به نحوه استفاده ترکیبی از جاوا اسکریپت (JavaScript) و PHP اختصاص دهیم.
هدف از ترکیب JavaScript و PHP
پیش از اینکه به ادامه آموزش بپردازیم بد نیست در یک جمع بندی کلی با هدف از تکنیک استفاده ترکیبی جاوا اسکریپت (JavaScript) و PHP آشنا شویم.
شرایطی که باعث می شود از جاوا اسکریپت و PHP به صورت ترکیبی استفاده کنیم اغلب به مواردی مربوط می شوند که بخواهیم به طور مثال محتوای داینامیک خروجی داده شده توسط کدهای PHP را به صورت فریم در صفحات HTML نمایش دهیم، به طور مثال فرض کنید فایل PHP با آدرس زیرپیج رنک سایت مورد نظر را محاسبه و به صورت آیکن نمایش می دهد.
http://www.yoursite.com/page_rank.php?url=$url&img=5
واضح است که اگر مقدار متغیر url درج شده در کد بالا را به صورت دستی تنظیم و این آدرس فرضی را در نوار آدرس مرورگر وارد کنیم احتمالا آیکن پیج رنک به نمایش در می آید، اما مشکل ما اجرای این کار به صورت خودکار و در صفحات وب است که امکان درج و اجرای مستقیم دستورات PHP در صفحات HTML وجود ندارد و از طرفی تمام و شاید اغلب کاربران این امکان را ندارند که از دستورات سمت سرور در وبلاگ ها استفاده کنند و محتوای فایل PHP را نمایش دهند، به همین خاطر باید به دنبال یک واسطه بین فایل های داینامیک PHP و صفحات استاتیک HTML باشیم، این واسطه چیزی نیست جزء دستورات زبان جاوا اسکریپت (JavaScript) که به راحتی می توان به کمک آن و تنها با چند خط کدنویسی ساده به هدف مورد نظر رسید و کد نهایی را به شکل نمونه زیر تغییر داد.<script type="text/javascript" src="http://yoursite.com/page_rank.php?url=$url&img=5"></script>
اکنون می توان کد اسکریپتی بالا را در صفحات HTML به راحتی استفاده کرد، این روش جایگزین مناسبی است برای تکنیک های مشابه (مانند استفاده از iframe و...)، اما مراحل انجام این کار.فراخوانی فایل PHP در JavaScript
اولین گام این است که آدرس فایل PHP خود را در قسمت src تگ های جاوا اسکریپت آدرس دهی کنیم، البته اگر تعداد فایل های سمت سرور بیش از یک مورد باشد، فایلی باید در این قسمت تنظیم شود که خروجی را تولید می کند و نیازی به وارد کردن سایر فایل ها درون دستورات جاوا اسکریپت نیست، به مثال زیر توجه کنید.
<script type="text/javascript" src="http://yoursite.com/output.php"></script>
نکته 1: اگر فایل سمت سرور (فایل PHP) نیاز به دریافت پارامترهایی داشته باشد، مانند متد GET در حالت عادی، می توانیم پارامترها را با افزودن علامت ? به انتهای آدرس و استفاده از علامت های & و =، به هر تعداد که لازم است تنظیم کنیم.نکته 2: استفاده از این روش محدود به لینک های داینامیک نیست، درواقع با هر لینکی که فایل سرور به درستی توسط آن فراخوانی شود، خروجی دریافت شده و به نمایش در می آید.
تنظیمات JavaScript در فایل PHP
در گام دوم و در فایل PHP، باید خروجی کدها را مطابق با syntax دستور document.write تنظیم کنیم، همان طور که می دانیم یک دستور ساده document.write در جاوا اسکریپت به صورت زیر است:
<script type="text/javascript">
document.write('چاپ خروجی مورد نظر در مرورگر');
</script>
لذا وقتی این دستور را در کدهای PHP استفاده می کنیم باید به نکات زیر توجه داشته باشیم.- درج موارد مربوط به document.write درون تگ های PHP مجاز نیست و باید خارج از علامت های php?> و ?> باشد.
نمونه اشتباه:
<?php
document.write('echo "ترکیب جاوا اسکریپت و PHP";');
?>
نمونه صحیح:document.write('<?php
echo "ترکیب جاوا اسکریپت و PHP";
?>');
- به جهت رعایت syntax صحیح و مطابق با دستور العمل جاوا اسکریپت، علامت های ' و " در خروجی را با یک بک اسلش (\) ایمن سازی می کنیم، دقت کنید که در برخی سرور ها به جهت روشن بودن قابلیت magic_quotes_gpc (این قابلیت علامت های ' و " را با افزودن یک بک اسلش ایمن سازی می کند)، این کار به صورت خودکار انجام می شود و لذا ابتدا باید این قابلیت را غیر فعال کنید یا بک اسلش های اضافه شده را حذف نمائید تا از درج دو بک اسلش (یک بک اسلش توسط magic_quotes_gpc و یک بک اسلش دیگر توسط توابعی مانند addslashes) اجتناب شود، نمونه راه حل زیر می تواند هر دو مشکل را بر طرف کند.document.write('<?php
//تابعی برای حذف بک اسلش های اضافه
function GpcClean($str){
if(get_magic_quotes_gpc()){
return stripslashes($str);
}
return $str;
}
//افزودن بک اسلش به خروجی
echo addslashes(GpcClean("ترکیب جاوا اسکریپت و PHP"));
?>');
ملاحظه می کنید که برای بررسی روشن بودن قابلیت magic_quotes_gpc از تابع get_magic_quotes_gpc استفاده کرده ایم، اگر این قابلیت روشن باشد (مقادیر برگردانده شده توسط تابع get_magic_quotes_gpc برابر با TRUE بود)، مقادیر خروجی از فیلتر تابع stripslashes عبور کرده و بک اسلش های زائد حذف می شوند، در نهایت نیز با تابع addslashes، هر جا علامت ' یا " در خروجی وجود داشته باشد به صورت '\ و "\ تبدیل می شوند تا مطابق با syntax دستورات جاوا اسکریپت باشند.نکته: استفاده از خط جدید (line break) در خروجی، مجاز نیست و موجب از کار افتادن نمایش کد می شود، به عبارت دیگر نباید از حالت Enter در خروجی کدهای PHP در ترکیب با جاوا اسکریپت استفاده شود.
دسته بندی: آموزش کاربردی » JavaScript
برچسب ها: JavaScript - PHP
مطالب بیشتر:
ساخت افکت رنگی با جاوا اسکریپت (JavaScript)
ساخت دکمه رفتن به بالای صفحه (Scroll to Top) با جاوا اسکریپت
ساخت منوی آکاردئونی با جاوا اسکریپت و CSS
کنترل و تغییر اندازه فونت صفحه با جاوا اسکریپت
نمایش پیام در حال بارگذاری با جاوا اسکریپت (JavaScript)
ساخت افکت رنگی با جاوا اسکریپت (JavaScript)
ساخت دکمه رفتن به بالای صفحه (Scroll to Top) با جاوا اسکریپت
ساخت منوی آکاردئونی با جاوا اسکریپت و CSS
کنترل و تغییر اندازه فونت صفحه با جاوا اسکریپت
نمایش پیام در حال بارگذاری با جاوا اسکریپت (JavaScript)
دیدگاه
۸۵ دیدگاه برای این مطلب ارسال شده است.
دیدگاه جدید بر اساس تاریخ ارسال در انتهای دیدگاه های موجود نمایش داده می شود.
دیدگاه جدید بر اساس تاریخ ارسال در انتهای دیدگاه های موجود نمایش داده می شود.
حمید
۱۳:۰۹ ۱۳۹۳/۱۲/۱۲
سلام! استفاده زیاد از if مشکل داره؟ مثلا میخوام برای روزهای مناسبتی بنویسم if فلان روز بود فلان نوشته رو بنویس! ولی خوب تعداد زیاد مثلا ۵۰ تا if! البته میدونم باید از switch اسفاده کنم! ولی میخوام بدونم استفاده زیاد از if مشکلی داره؟ از همه نظر! حتی کند شدن سایت و یا مثلا مشکل در seo یا چیزای دیگه!
سلام
به طور کلی خیر! استفاده از دستور if به خودی خود مشکل خاصی ایجاد نمی کند، عمده مزیت استفاده از switch در برخی شرایط نسبت به if در نوشتن کدهای خواناتر است، البته به مرور زمان متوجه خواهید شد که کجا از if و کجا از switch استفاده شود بهتر است (هر زمان تعداد if های تو در تو به نظر بیش از حد رسید، شاید استفاده از switch جالبتر باشد!).
به طور کلی خیر! استفاده از دستور if به خودی خود مشکل خاصی ایجاد نمی کند، عمده مزیت استفاده از switch در برخی شرایط نسبت به if در نوشتن کدهای خواناتر است، البته به مرور زمان متوجه خواهید شد که کجا از if و کجا از switch استفاده شود بهتر است (هر زمان تعداد if های تو در تو به نظر بیش از حد رسید، شاید استفاده از switch جالبتر باشد!).
محمدرضا
۰۸:۲۷ ۱۳۹۳/۱۲/۲۰
سلام خسته نباشید ببخشید یه سوالی داشتم نمی دونم جای پرسش سوالم اینجا هست یا نه به هر حال ممنون میشم یه کمکی بهم بکنید
- بنده دارم اوقات شرعی شهرم رو میسازم تمام کد نویسی های به زبان php انجام شده حالا می خوام که این کدی که نوشتم با صورت جاوا اسکریپت ارتباط بدم و کاربر با استفاده از کد جاوا اسکریپت بتونه از این ابزار استفاده کنه من از این روش استفاده کردم ولی جوابی نگرفتم ممنون میشم که کمکی بکنید
- بنده دارم اوقات شرعی شهرم رو میسازم تمام کد نویسی های به زبان php انجام شده حالا می خوام که این کدی که نوشتم با صورت جاوا اسکریپت ارتباط بدم و کاربر با استفاده از کد جاوا اسکریپت بتونه از این ابزار استفاده کنه من از این روش استفاده کردم ولی جوابی نگرفتم ممنون میشم که کمکی بکنید
<script language="javascript" type="text/javascript" src="http://yoursite.com/owghat/owghat_a/owghat.php"></script>
مشکلم فقط ساخت کد جاوا اسکریپت اوقات شرعی هست.سلام
لطفا آموزش را به طور کامل مطالعه کنید، مطلب دقیقا در همین رابطه است و در حد امکان تمام جزئیات جهت ترکیب کدهای PHP با JavaScript ارائه شده، اینکه کدهایتان اجرا نمی شود قاعدتا نشان دهنده وجود اشتباهی در روش یا قسمتی از کدهایتان است.
لطفا آموزش را به طور کامل مطالعه کنید، مطلب دقیقا در همین رابطه است و در حد امکان تمام جزئیات جهت ترکیب کدهای PHP با JavaScript ارائه شده، اینکه کدهایتان اجرا نمی شود قاعدتا نشان دهنده وجود اشتباهی در روش یا قسمتی از کدهایتان است.
۲۲:۳۸ ۱۳۹۳/۱۲/۲۷
استفاده بردیم. تشکر می کنم.
محمد
۱۸:۵۲ ۱۳۹۴/۰۴/۰۲
با سلام
سایت خوب با مطالب آموزنده ای دارید من همیشه از آموزش هاتون استفاده میکنم اما این بار سوالی برام پیش اومده.
من با #C یه صفحه رو به صورت html ذخیره کردم حالا
1- چطور میتونم با استفاده از php , js بعضی قسمت ها رو حذف کنم.
مثلا میخوام یک دایو با کل محتویاتش حذف بشه؟ (همه دایو ها آی دی دارن)
2- چطور میتونم از a ها، یه قسمت از href شون رو جایگزین کنم؟ (a ها آی دی ندارن!)
3- با توجه به اینکه از js روی فایل خارجی (همونی صفحه html ذخیره شده) استفاده شده، چطور میتونم فایل نهایی رو با فرمت html ذخیره کنم؟
شرمنده که سوال هام زیاد بود.
سایت خوب با مطالب آموزنده ای دارید من همیشه از آموزش هاتون استفاده میکنم اما این بار سوالی برام پیش اومده.
من با #C یه صفحه رو به صورت html ذخیره کردم حالا
1- چطور میتونم با استفاده از php , js بعضی قسمت ها رو حذف کنم.
مثلا میخوام یک دایو با کل محتویاتش حذف بشه؟ (همه دایو ها آی دی دارن)
2- چطور میتونم از a ها، یه قسمت از href شون رو جایگزین کنم؟ (a ها آی دی ندارن!)
3- با توجه به اینکه از js روی فایل خارجی (همونی صفحه html ذخیره شده) استفاده شده، چطور میتونم فایل نهایی رو با فرمت html ذخیره کنم؟
شرمنده که سوال هام زیاد بود.
سلام
- در پاسخ به سوال اول و دوم، این کار باید در کدهای PHP انجام شود (با توابعی مانند preg_match و عبارات باقاعده)، البته با جاوا اسکریپت نیز انجام چنین کاری ممکن است، منتها PHP زبان سمت سرور و جاوا اسکریپت سمت کاربر و در مرورگر اجرا می شود، برای کار با توابع preg_match نیز ضمن نیاز به آشنایی با عبارات باقاعده یا Regular Expressions، باید الگو یا Pattern خاصی (مانند id خاص) نیز در سورس کدها وجود داشته باشد (در غیر اینصورت کار غیر ممکن یا خیلی سخت و پیچیده می شود).
- در پاسخ به سوال سوم، منظورتان دقیقا مشخص نیست! دستورات جاوا اسکریپت می توانند داخل فایل HTML یا به صورت فایل خارجی باشند و از این نظر مشکلی وجود ندارد!
- در پاسخ به سوال اول و دوم، این کار باید در کدهای PHP انجام شود (با توابعی مانند preg_match و عبارات باقاعده)، البته با جاوا اسکریپت نیز انجام چنین کاری ممکن است، منتها PHP زبان سمت سرور و جاوا اسکریپت سمت کاربر و در مرورگر اجرا می شود، برای کار با توابع preg_match نیز ضمن نیاز به آشنایی با عبارات باقاعده یا Regular Expressions، باید الگو یا Pattern خاصی (مانند id خاص) نیز در سورس کدها وجود داشته باشد (در غیر اینصورت کار غیر ممکن یا خیلی سخت و پیچیده می شود).
- در پاسخ به سوال سوم، منظورتان دقیقا مشخص نیست! دستورات جاوا اسکریپت می توانند داخل فایل HTML یا به صورت فایل خارجی باشند و از این نظر مشکلی وجود ندارد!
محمد
۱۹:۰۷ ۱۳۹۴/۰۴/۰۲
با سلام و خسته نباشید
ببخشید که تعداد سوال هام باز هم زیاد شد
می خواستم بپرسم با php میشه فقط یه div با id مشخص رو از یه سایت دانلود و با جاوا اسکریپت بعضی فرزندهاش رو حذف کرد و به صورت صفحه استاتیک (html) ذخیره کرد؟
(استفاده از جاوا اسکریپت برای حذف و... تگ ها رو بلدم اما بلد نیستم چطور میشه رو تگ هایی خوانده شده از ورودی توسط php، استفاده کرد!)
ببخشید که تعداد سوال هام باز هم زیاد شد
می خواستم بپرسم با php میشه فقط یه div با id مشخص رو از یه سایت دانلود و با جاوا اسکریپت بعضی فرزندهاش رو حذف کرد و به صورت صفحه استاتیک (html) ذخیره کرد؟
(استفاده از جاوا اسکریپت برای حذف و... تگ ها رو بلدم اما بلد نیستم چطور میشه رو تگ هایی خوانده شده از ورودی توسط php، استفاده کرد!)
سلام
به نظر برداشت شما از همراهی PHP و JavaScript اشتباه است! دقت کنید در زمان اجرای کدهای PHP نمی توان همزمان از جاوا اسکریپت استفاده کرد، جاوا اسکریپت زمانی قابل استفاده است که خروجی به مرورگر ارسال می شود، راه حل شما این است که در همان کدهای PHP، با توابعی مانند preg_match حذف و ... را انجام دهید!
به نظر برداشت شما از همراهی PHP و JavaScript اشتباه است! دقت کنید در زمان اجرای کدهای PHP نمی توان همزمان از جاوا اسکریپت استفاده کرد، جاوا اسکریپت زمانی قابل استفاده است که خروجی به مرورگر ارسال می شود، راه حل شما این است که در همان کدهای PHP، با توابعی مانند preg_match حذف و ... را انجام دهید!
محمد
۲۳:۳۱ ۱۳۹۴/۰۴/۰۳
با سلام ضمن تشکر از شما مطالبی درباره عبارات با قاعده در سایت های مختلف همچنین سایت شما مطالعه کردم اما همچنان برای من سواله که چطور
یک div با id=content رو انتخاب کنم
href یک a رو بخونم
href یک a رو تغییر بدم
اگه لطف کنید یه تکه کد به من بدید خیلی لطف بزرگی کرده اید.
واسه پروژه ام خیلی به این کدها نیاز دارم
با تشکر فراوان
یک div با id=content رو انتخاب کنم
href یک a رو بخونم
href یک a رو تغییر بدم
اگه لطف کنید یه تکه کد به من بدید خیلی لطف بزرگی کرده اید.
واسه پروژه ام خیلی به این کدها نیاز دارم
با تشکر فراوان
سلام
این بحث خیلی گسترده است و با توجه به هدف، حالت های زیادی متصور است، باید دقیقا شرایط را تشریح کنید، به فرض انتخاب یک div بر اساس id آن برای چه هدفی است؟ صرف انتخاب معنی خاصی ندارد! یا آیا تگ a دارای مشخصه خاصی است که بتواند آن را از سایر موارد مشابه مجزا کند؟ صرفا در حد نمونه کد:
این بحث خیلی گسترده است و با توجه به هدف، حالت های زیادی متصور است، باید دقیقا شرایط را تشریح کنید، به فرض انتخاب یک div بر اساس id آن برای چه هدفی است؟ صرف انتخاب معنی خاصی ندارد! یا آیا تگ a دارای مشخصه خاصی است که بتواند آن را از سایر موارد مشابه مجزا کند؟ صرفا در حد نمونه کد:
<?php
$html = '<a href="http://www.yoursite.com/page.html" title="your title">URL</a>';
$url = preg_match('/<a href=\"(.*)\"(.*)>(.*)<\/a>/iU', $html, $match);
//print_r($match);
echo $match[1];
echo '<br>';
$replace = preg_replace('/<a href=\"(.*)\"(.*)>(.*)<\/a>/iU', '<a href="http://mysite.com"$2>$3</a>', $html);
echo $replace;
?>
ali
۰۸:۴۶ ۱۳۹۴/۰۴/۰۵
سلام
خدا قوت
ممنون از سایت خوبتون ولی یه مشکلی برای من پیش اومده
من این کد رو که نمایش دهنده ساعت سرور هست رو در سایتم کپی کردم که درست کار میکنه اما مشکل اینجاست
که وقتی کد فراخوانی رو در اچ تی ام ال قرار میدم کار نمیکنه
لطفا راهنمایی کنید ممنون
خدا قوت
ممنون از سایت خوبتون ولی یه مشکلی برای من پیش اومده
من این کد رو که نمایش دهنده ساعت سرور هست رو در سایتم کپی کردم که درست کار میکنه اما مشکل اینجاست
که وقتی کد فراخوانی رو در اچ تی ام ال قرار میدم کار نمیکنه
لطفا راهنمایی کنید ممنون
<script type="text/javascript" src="http://rashkan.com/hhhhhh/index.php"></script>
سلام
در خروجی کدهای فایل index.php تگ های اضافه (از جمله script) وجود دارد، زمانی که فایل php (با خروجی جاوا اسکریپت) را داخل تگ script با آدرس دهی فراخوانی می کنید، نباید در خروجی فایل php، مجددا تگ script چاپ شود! این کار باعث بروز خطای Syntax و عدم اجرای کدها در مرورگر می شود.
در خروجی کدهای فایل index.php تگ های اضافه (از جمله script) وجود دارد، زمانی که فایل php (با خروجی جاوا اسکریپت) را داخل تگ script با آدرس دهی فراخوانی می کنید، نباید در خروجی فایل php، مجددا تگ script چاپ شود! این کار باعث بروز خطای Syntax و عدم اجرای کدها در مرورگر می شود.
۱۹:۵۴ ۱۳۹۴/۰۴/۰۵
سلام
خدا قوت
ممنون از اینکه اینقدر سریع به مشکل من رسیدگی کردید اما یک خواهش دارم که می دونم توقع بالاییست.
من با پی اچ پی آشنایی چندانی ندارم ولی الآن به این
کد احتیاج دارم آیا امکانش هست که فایل پی اچ پی رو برام تصحیح کنید البته اگر هم نشد تا همین جا هم ممنون
یاعلی
خدا قوت
ممنون از اینکه اینقدر سریع به مشکل من رسیدگی کردید اما یک خواهش دارم که می دونم توقع بالاییست.
من با پی اچ پی آشنایی چندانی ندارم ولی الآن به این
کد احتیاج دارم آیا امکانش هست که فایل پی اچ پی رو برام تصحیح کنید البته اگر هم نشد تا همین جا هم ممنون
یاعلی
سلام
فایلتان را به صورت فشرده (فرمت zip) به آدرس ایمیل ما (موجود در بخش تماس) ارسال و نتیجه را از همان طریق پیگیر باشید.
فایلتان را به صورت فشرده (فرمت zip) به آدرس ایمیل ما (موجود در بخش تماس) ارسال و نتیجه را از همان طریق پیگیر باشید.
محمد
۱۹:۵۷ ۱۳۹۴/۰۴/۱۳
با سلام و تشکر از مثالی که واسه عبارات منظم قرار دادین
به عنوان مثال از لینک
نام فایل از دایوی که نام کلاس آن title است انتخاب شود.
همچنین href تمام عکس ها به این صورت هستش
http://cdn.yjc.ir/files/fa/news/1394/4/10/3331555_718.jpg
که می خواهم به این صورت تغییر کنه
images/3331555_718.jpg
چون صفحاتی که باید متن آنها ذخیره شود زیاد است (در حدود 1200 صفحه) این کار را به صورت دستی نمیشه انجام داد.
باز هم شرمنده و دستتون درد نکنه به خاطر پاسخ دادن به سوالات کاربران
به عنوان مثال از لینک
http://www.yjc.ir/fa/news/5248896/%D8%A2%DB%8C%D8%A7%D8%AA%DB%8C-%D8%A7%D8%B2-%D9%82%D8%B1%D8%A2%D9%86-%DA%A9%D8%B1%DB%8C%D9%85-%DA%A9%D9%87-%D9%88%D8%AC%D9%88%D8%AF-%D9%85%D9%88%D8%AC%D9%88%D8%AF%D8%A7%D8%AA-%D9%81%D8%B6%D8%A7%DB%8C%DB%8C-%D8%B1%D8%A7-%D8%A7%D8%AB%D8%A8%D8%A7%D8%AA-%D9%85%DB%8C%E2%80%8C%DA%A9%D9%86%D9%86%D8%AF
می خواهم محتویات دایو (متن همراه با تمام تگ ها) که نام کلاس آن body است استخراج شده و در یک فایل html ذخیره شودنام فایل از دایوی که نام کلاس آن title است انتخاب شود.
همچنین href تمام عکس ها به این صورت هستش
http://cdn.yjc.ir/files/fa/news/1394/4/10/3331555_718.jpg
که می خواهم به این صورت تغییر کنه
images/3331555_718.jpg
چون صفحاتی که باید متن آنها ذخیره شود زیاد است (در حدود 1200 صفحه) این کار را به صورت دستی نمیشه انجام داد.
باز هم شرمنده و دستتون درد نکنه به خاطر پاسخ دادن به سوالات کاربران
سلام
برای تجزیه یک سند HTML معمولا نیازی به عبارات با قاعده نیست و بهتر است از کلاس هایی مانند DOMDocument استفاده کنید که روش استانداردتر است، مثال:
- دریافت اطلاعات یک div بر اساس class آن:
برای تجزیه یک سند HTML معمولا نیازی به عبارات با قاعده نیست و بهتر است از کلاس هایی مانند DOMDocument استفاده کنید که روش استانداردتر است، مثال:
- دریافت اطلاعات یک div بر اساس class آن:
<?php
$html = file_get_contents('http://www.yjc.ir/fa/news/5248896/%D8%A2%DB%8C%D8%A7%D8%AA%DB%8C-%D8%A7%D8%B2-%D9%82%D8%B1%D8%A2%D9%86-%DA%A9%D8%B1%DB%8C%D9%85-%DA%A9%D9%87-%D9%88%D8%AC%D9%88%D8%AF-%D9%85%D9%88%D8%AC%D9%88%D8%AF%D8%A7%D8%AA-%D9%81%D8%B6%D8%A7%DB%8C%DB%8C-%D8%B1%D8%A7-%D8%A7%D8%AB%D8%A8%D8%A7%D8%AA-%D9%85%DB%8C%E2%80%8C%DA%A9%D9%86%D9%86%D8%AF');
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
$finder = new DomXPath($doc);
$node = $finder->query('//div[@class="body"]');
echo $doc->saveHTML($node->item(0));
?>
- تغییر src آدرس های تصویر (در ادامه کدهای بالا):<?php
function changeSRC($content){
$content = preg_replace('/src="([^"]*\/(.+)\.(?:png|jpeg|jpg|gif|bmp))"/', 'src="images/$2.jpg"', $content);
return $content;
}
/*کدهای مثال بالا*/
$result = $doc->saveHTML($node->item(0));
echo changeSRC($result);
?>
Ali
۱۱:۴۲ ۱۳۹۴/۰۴/۲۶
سلام دوست عزیز
به کدی برخوردم در جاوااسکریپت می خواستم ببینم معادلش تو php چی میشه
اگه فکر بهتری دارید ممنون میشم بگید
با تشکر
به کدی برخوردم در جاوااسکریپت می خواستم ببینم معادلش تو php چی میشه
window.top != window.self
(می خوام از این طریق کاربر رو مجبور کنم صفحه رو از طریق iframe ببینه و نتونه مستقیم به صفحه دسترسی داشته باشه)اگه فکر بهتری دارید ممنون میشم بگید
با تشکر
سلام
این متدها صرفا در جاوا اسکریپت کاربرد دارند و معادل PHP ندارند.
این متدها صرفا در جاوا اسکریپت کاربرد دارند و معادل PHP ندارند.
mrm
۱۹:۵۹ ۱۳۹۴/۰۵/۰۸
سلام
خدا قوت
می خواستم بدونم که آیا به صورت برعکس هم میشه این کار رو انجام داد . یعنی دستورهای جاوا اسکریپت رو داخل فایل پی اچ پی نوشت من یک فایل جاوا دارم که می خوام در فایل پی اچ پی بنویسم
اگه میشه راهنمایی کنید
ممنون
کد جاواش هم اینه
خدا قوت
می خواستم بدونم که آیا به صورت برعکس هم میشه این کار رو انجام داد . یعنی دستورهای جاوا اسکریپت رو داخل فایل پی اچ پی نوشت من یک فایل جاوا دارم که می خوام در فایل پی اچ پی بنویسم
اگه میشه راهنمایی کنید
ممنون
کد جاواش هم اینه
حذف شد
سلام
اگر هدف نهایی از این کار را می گفتید، راهنمایی ساده تر می شد، به هر صورت باید توجه کنید که جاوا اسکریپت و PHP هر کدام کاربرد و خصوصیت خودشان را دارند، PHP در سرور اجرا می شود اما جاوا اسکریپت در مرورگر، لذا اگر هم کدهای جاوا اسکریپت را با PHP خروجی بگیرید، یا بین دستورات PHP بنویسید، نهایتا در مرورگر چاپ و سپس اجرا می شود نه در سرور، در سرور فقط کدهای PHP قابلیت اجرا دارند که خود در نهایت یک خروجی به صورت JavaScript + HTML برای مرورگر تهیه می کنند.
اگر هدف نهایی از این کار را می گفتید، راهنمایی ساده تر می شد، به هر صورت باید توجه کنید که جاوا اسکریپت و PHP هر کدام کاربرد و خصوصیت خودشان را دارند، PHP در سرور اجرا می شود اما جاوا اسکریپت در مرورگر، لذا اگر هم کدهای جاوا اسکریپت را با PHP خروجی بگیرید، یا بین دستورات PHP بنویسید، نهایتا در مرورگر چاپ و سپس اجرا می شود نه در سرور، در سرور فقط کدهای PHP قابلیت اجرا دارند که خود در نهایت یک خروجی به صورت JavaScript + HTML برای مرورگر تهیه می کنند.
mrm
۱۶:۰۰ ۱۳۹۴/۰۵/۱۰
سلام
ممنون از اینکه اینقدر سریع رسیدگی کردید
متوجه شدم
ممنون
ممنون از اینکه اینقدر سریع رسیدگی کردید
متوجه شدم
ممنون
هادی
۱۸:۲۴ ۱۳۹۴/۰۷/۰۱
سلام آقای ادمین وقت بخیر
باز یه سوالی ازتون داشتم
از داخل یک قالب html میشه با DOMDocument یه تگ (بر اساس کلاس یا آی دی یا...) جستجو کرد بطوریکه بتونه نام تمام والدهاش رو به صورت زیر برگردونه؟
باز یه سوالی ازتون داشتم
از داخل یک قالب html میشه با DOMDocument یه تگ (بر اساس کلاس یا آی دی یا...) جستجو کرد بطوریکه بتونه نام تمام والدهاش رو به صورت زیر برگردونه؟
/html/body/div/div/div/div[2]/div/p
چون منبع فارسی ای پیدا نکردم مجبور شدم باز مزاحم شما بشمسلام
این موارد را معمولا نمی توانید به راحتی در وب پیدا کنید چون باید کمی کدنویسی بلد باشید و از تجمیع اطلاعات موجود، کد مورد نیاز خودتان را بنویسید، در هر صورت به نظر روش نمونه زیر مفید خواهد بود:
این موارد را معمولا نمی توانید به راحتی در وب پیدا کنید چون باید کمی کدنویسی بلد باشید و از تجمیع اطلاعات موجود، کد مورد نیاز خودتان را بنویسید، در هر صورت به نظر روش نمونه زیر مفید خواهد بود:
<?php
//$html = file_get_contents('Your_URL');
$html = '<html><body><div><div><p><strong id="test"></strong></p></div></div></body></html>';
$id = 'test';
$loop = 1;
$max_loop = 1000;
@$array = array();
$dom = new domDocument;
$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$elm = $dom->getElementById($id);
$parent = $elm->parentNode;
while($parent != FALSE && $loop < $max_loop){
$tag_name = $parent->nodeName;
$array[$loop - 1] = $tag_name;
@$parent = $parent->parentNode;
$loop++;
}
krsort($array);
foreach($array as $key => $value){
echo $value.'<br>';
}
?>
نتیجه:#document
html
body
div
div
p
ali
۰۲:۳۵ ۱۳۹۴/۰۸/۱۱
سلام
خدا قوت
یه سوال دارم
به این کد نگاه کنید
خدا قوت
یه سوال دارم
به این کد نگاه کنید
<!-- www.20i.ir --->
<script type="text/javascript" src="http://www.20i.ir/tools/time/c.php?t=130px&sz=12px&c=333333&colort=333333&bg=ffffff"></script><div style="display:none"><h1><a href="http://www.20i.ir">نمايش ساعت</a></h1></div>
<!-- www.20i.ir --->
این کد ساعت با جاوا هست این نوع کدها را سایت های ابزار وبلاگ ارائه می دهند دلیلش چیه که کدهای js به صورت php هستند در حالی که احتیاج به این کار نیستسلام
علت این است که معمولا در اینگونه ابزارها یک سری از پارامترهای لازم به سلیقه کاربر باید تنظیم شوند، به طور مثال در این نمونه کد قسمت زیر (از طریق متد GET) به کد PHP داده می شود تا در خروجی نهایی به صورت داینامیک در دستورات استفاده شود:
علت این است که معمولا در اینگونه ابزارها یک سری از پارامترهای لازم به سلیقه کاربر باید تنظیم شوند، به طور مثال در این نمونه کد قسمت زیر (از طریق متد GET) به کد PHP داده می شود تا در خروجی نهایی به صورت داینامیک در دستورات استفاده شود:
t=130px&sz=12px&c=333333&colort=333333&bg=ffffff
به این ترتیب پیش از خروجی دستورات جاوا اسکریپت می توان موارد را بر اساس پارامترهای ارسالی تغییر داد، به فرض:document.write('<?php
$t = $_GET['t'];
echo '<div style="width:'.$t.'">test!</div>';
?>');
محمد
۰۰:۵۲ ۱۳۹۴/۰۹/۰۱
سلام استاد خسته نباشید
ببخشید من الان در این جا در این ارایه بخوام ارایه رو پر کنم
چه جوری امکان داره
چجوری میتونم در اینجا از php استفاده کنم
ممنون
ببخشید من الان در این جا در این ارایه بخوام ارایه رو پر کنم
چه جوری امکان داره
var chartData = [{"date": "2012-03-01","price": 20}]
میخواهم در واقع در این نمودار تاریخ و قیمت رو پر کنم چجوری میتونم در اینجا از php استفاده کنم
ممنون
سلام
کافی است فایل خروجی دهنده شما با فرمت php باشد، در این صورت می توان این خط را به صورت نمونه زیر نوشت تا امکان چاپ متغیرهای سمت سرور فراهم باشد:
کافی است فایل خروجی دهنده شما با فرمت php باشد، در این صورت می توان این خط را به صورت نمونه زیر نوشت تا امکان چاپ متغیرهای سمت سرور فراهم باشد:
var chartData = [{"date": "<?php echo $your_date;?>","<?php echo $your_price;?>": 20}]
نکته: قاعدتا متغیرها ابتدا باید تعریف و مقدار معتبری داشته باشند!آخرین دیدگاه ها
برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
مجتبی
سلام وقت بخیر میخوام یک روز به تاریخ دریافتی اضافه شه ممنون میشم راهنمایی کنید۱۴۰۳/۰۶/۲۰
پرتو
سلام خوبید؟ خسته نباشیذ ببخشید مزاحم شدم می خواستم بگم من به شما ایمیل زدم ولی هنوز شما جواب ندادین می تونم بپرسم چرا سوال...۱۴۰۳/۰۶/۱۵
سیدعباسی
با سلام ببخشید یه سوال دیگه هم دارم من با این تابع فقط یه دونه کانال رو می تونم خروجی بگیرم میخوام توی...۱۴۰۳/۰۵/۰۶
سیدعباسی
با تشکر از شما مشکلم اینکه چطوری عکس پست آخر رو بدست بیارم و بعد با الگوی که اونو نوشتید استخراجش کنم سورس...۱۴۰۳/۰۵/۰۵
سیدعباسی
با سلام من مشکل قبلیم رو که گفتم ارور میده رو حل کردم مشکل بعدیم اینکه با استفاده از این کد با تشکر...۱۴۰۳/۰۵/۰۳
سیدعباسی
با سلام این کد رو چند روز پیش برام فرستادید و کارم رو راه انداخت با این میشه عکس ها رو استخراج کرد...۱۴۰۳/۰۵/۰۱
پرتو
سلام جناب خوبید؟ چیزی شده جواب نمیدین؟ آخه من ایمیل دادمممم ممنون میشم چک کنید لطفا۱۴۰۳/۰۴/۳۱
در انتظار بررسی: ۰
پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.