شنبه ۱۱ آذر ۱۴۰۲

Saturday, December 2, 2023 GMT +3:30

آموزش برنامه نویسی وب با PHP

php

در طی مسیر فراگیری دانش و توسعه مهارتهای برنامه نویسی وب پس از آموختن کلیاتی از CSS, HTML و JavaScript دیر یا زود اسمی از یک زبان برنامه نویسی سمت سرور مانند PHP به گوشمان خواهد خورد، ساختار وب به گونه ای است که از دو بخش سمت کاربر (مرورگر) و سمت سرور (جایی که صفحه وب یا برنامه تحت وب در آن قرار دارد) تشکیل شده و لذا صرف آشنایی با آنچه تا کنون آموخته ایم نمی تواند برای انجام فعالیت های حرفه ای و طراحی سیستم های پیشرفته کافی باشد و لزوما باید یک زبان برنامه نویسی سمت سرور مانند PHP را فرا بگیریم، با PHP می توانیم به صورت پویا آنچه را که کاربر باید در صفحه مرورگر خود ببیند مدیریت کنیم، به طور مثال اگر فرم اولیه ورود به سایت با HTML و CSS طراحی شده باشد، پس از ارسال نام کاربری و کلمه عبور به سرور، این PHP است که وظیفه تطبیق اطلاعات با پایگاه داده و صدور اجازه یا عدم اجازه دسترسی به پنل مدیریت را بر عهده دارد، با PHP می توانیم تقریبا هر خواسته ای که از سرور داشته باشیم را عملی و صفحات وب داینامیک و برنامه های تحت وب حرفه ای طراحی کنیم.

تعریف PHP به زبان ساده


اگر بخواهیم PHP را به زبان ساده تعریف کنیم می توانیم آن را زبان برنامه نویسی اسکریپتی چند منظوره بنامیم که به طور خاص برای وب توسعه یافته و جهت نوشتن برنامه های تحت وب کاربرد تخصصی دارد، این تعریف ترجمه ساده از عبارتی است که در سایت php.net درج شده است:
PHP is a popular general-purpose scripting language that is especially suited to web development.
این زبان در سال 1994 میلادی توسط Rasmus Lerdorf با هدف نمایش آنلاین اطلاعات و رزومه شخصی به زبان C نوشته شد که به همین دلیل در ابتدا آن را Personal Home Page نامیدند که PHP مخففی از سرواژه های این عبارت است، بعدها با پیشرفت PHP عبارت توضیحی HyperText Preprocessor (پیش پردازنده ابرمتن) جایگزین عبارت فوق شد، منظور از پیش پردازنده ابرمتن این است که PHP ابتدا کدها و دستورات را با مفسر خود پردازش کرده و سپس خروجی را به مرورگر کاربر ارسال می کند.
نکته: منظور از اسکریپتی بودن PHP این است که کدهای آن در مفسر سرور پردازش شده و مانند برنامه های رایج در قالب یک بسته نرم افزاری کامپایل نمی شوند.

چرا PHP بیاموزیم و با PHP برنامه نویسی کنیم؟


اغلب علاقمندان به فراگیری دانش برنامه نویسی وب پس از اینکه از مرحله زبان های سمت کاربر عبور می کنند در دو یا بعضا چندراهی انتخاب یک زبان برنامه نویسی سمت سرور به شک و تردید دچار می شوند، محدودیت های زمانی، انرژی و حوصله ای که برای فراگیری یک زبان برنامه نویسی صرف می شود این انتخاب را بیش از پیش حساستر کرده و حتی آینده حرفه ای ما را رقم می زند، اگر در وب عباراتی مانند "PHP یا ASP کدام بهتر است؟!" را جستجو کنید، ملاحظه می کنید که اغلب بین برنامه نویسان در این خصوص که کدام زبان مناسب تر است بحث های طولانی و بعضا متعصبانه رخ داده و هر کسی با دید خود به این قضیه نگاه می کند، اما واقعیت این است که هیچ زبانی کامل و بی نقص نیست و ما هم قصد نداریم PHP را با زبان های دیگر مقایسه کنیم چرا که هیچ محدودیتی از این نظر که بتوانیم از چند زبان برنامه نویسی استفاده کنیم وجود ندارد و در واقع مرزی برایمان به عنوان برنامه نویس نباید ترسیم کنیم، PHP را می آموزیم چون متخصص در امر وب است و تمام نیازهایمان را به خوبی پوشش می دهد، چون ساده و در عین حال قدرتمند، سریع و امن است، رایگان، کم دردسر و در دسترس است، کدنویسی با PHP اغلب به درک بهتر ساختار و پیچیدگی های وب کمک می کند، PHP از شیوه های برنامه نویسی معمولی و شی گرا به خوبی پشتیبانی می کند، برای کار با پایگاه داده اکستنشن های قوی و تخصصی دارد، PHP متن باز (Open-source) است و آنگونه که توسعه محصولات شرکت های بزرگ به پدیدآورنده محدود می شود وابسته به شرکت خاصی نیست، اغلب برنامه های رایگان و پرکاربرد مدیریت محتوای وب (CMS) به زبان PHP نوشته شده اند مانند وردپرس، جوملا، دروپال و...، PHP توسط گروهی حرفه ای از برنامه نویسان وب پشتیبانی می شود، وجود سایت مرجع php.net و جامعه وسیعی از کاربران در سطح وب خود نویدبخش رشد شتابان PHP و رفع نواقص احتمالی نسبت به زبان های مشابه و آینده روشن است، لذا می توان PHP را یکی از مناسبترین گزینه ها برای برنامه نویسی سمت سرور به شمار آورد.

فراگیری PHP، آسان و شیرین!


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

برای کدنویسی PHP از چه برنامه ای استفاده کنیم؟


اکنون که با کلیات برنامه نویسی با PHP آشنا شدیم نوبت به ورود عملی به این مسیر است، در اولین گام این سوال مطرح می شود که برای کدنویسی PHP از چه برنامه ای باید استفاده کنیم؟ در پاسخ می توان چند برنامه قوی و کاربردی مختلف را پیشنهاد داد از جمله برنامه قدرتمند و مناسب PhpStorm (توصیه می کنیم برای شروع از این برنامه استفاده کنید)، برنامه شرکت ادوبی با نام Adobe Dreamweaver، برنامه رایگان و متن باز NetBeans IDE - PHP Development با محیط کدنویسی قوی و پشتیبانی مناسب، در کنار این برنامه ها استفاده از ویرایشگرهای به ظاهر ساده مانند ++Notepad برای کار با فایل های PHP ضروری خواهد بود، خوشبختانه تمام موارد نامبرده با یک جستجوی کوتاه در وب در دسترس می باشند.

اجرای کدهای PHP در سیستم عامل


از آنجایی که PHP یک زبان سمت سرور (Server-side) است برای اجرای آن در سیستم خود نیاز به برنامه هایی تحت عنوان سرور مجازی (Localhost) داریم که اغلب به صورت رایگان در دسترس هستند، برای نمونه یکی از بهترین ها در آدرس زیر قابل دریافت است:
wampserver.com
همچنین:
appservnetwork.com
و همچنین:
apachefriends.org
پس از نصب هر یک از برنامه های WampServer، AppServ یا XAMPP اکنون شما قادر به اجرای فایل های PHP بر روی سیستم خودتان خواهید بود (توصیه می کنیم یکی از نسخه های برنامه WampServer را متناسب با سیستم خود انتخاب کرده و نصب نمائید)، پس از نصب و اجرای برنامه به آیکن مربوطه که معمولا در نوار وظیفه سیستم عامل مشخص است دقت نمائید، به طور مثال برنامه WampServer در حالت عادی آیکنی سبزرنگ را نمایش می دهد و این یعنی سرور مجازی شما فعال و آماده به کار است، اکنون برنامه ویرایشگر فایل های PHP خود (به طور مثال PhpStorm) را اجرا و فایلی با نام example.php (فایل فرضی و نام دلخواه) در فولدر www محل نصب سرور مجازی ذخیره نمائید، به فرض اگر برنامه WampServer را در درایو C در فولدر Wamp قرار داده باشید، ریشه سرور مجازی شما به صورت نمونه زیر خواهد بود:
C:\Wamp\www
فایل example.php را درون این فولدر قرار دهید، بهتر است این فایل با نمونه کدهای ساده HTML کدنویسی شده باشد تا در هنگام گرفتن خروجی نتیجه مشخص شود، در نهایت مرورگرتان را اجرا کرده و عبارت http://localhost/example.php را در قسمت نوار آدرس نوشته، دکمه Enter را در صفحه کلید بزنید تا فایل از فولدر www فراخوانی شود، اگر همه چیز صحیح باشد صفحه وب شما در مرورگر نمایش داده خواهد شد درست مانند اینکه یک سایت آنلاین بر روی سرور واقعی برپا کرده باشید (در سرور آنلاین نیز معمولا ریشه سایت فولدر public_html یا www است).

چند مثال ساده با PHP


فلسفه پیدایش PHP (سال 1994 میلادی توسط Rasmus Lerdorf) ایجاد صفحات داینامیک و استفاده از آن در وب بوده (هرچند PHP را می توان به صورت General-purpose استفاده کرد) لذا می توان دستورات این زبان را در کنار کدهای ساده HTML درج و اجرا کرد (در اصطلاح PHP را HTML-embedded می گویند) این قابلیت یکی از نقاط قوت PHP محسوب شده و یادگیری آن را ساده تر می کند، برای شروع و آشنایی بیشتر کدها و مثال هایی ساده از این زبان را مرور می کنیم:
<?php
echo "اولین کد PHP من!";
?>
توضیح:
- کدهای PHP با تگ علامت سوال ، php شروع و با علامت سوال بسته می شوند (شیوه استاندارد).
- دستور echo مقادیر را به خروجی ارسال و در مرورگر چاپ می کند.
حال به کد زیر توجه کنید:
<?php
$text = "اولین کد PHP من!";
echo $text;
?>
پیش نمایش
توضیح:
- در کد بالا عبارت اولین کد PHP من! به جای اینکه مستقیما به echo داده شود، ابتدا به یک متغیر (در آینده در این رابطه مفصل خواهیم گفت) نسبت داده شده و سپس مقادیر متغیر با دستور echo به خروجی داده می شود (علامت $ در PHP نشان دهنده متغیر است).
حال به مثال زیر توجه کنید:
<?php
$num1 = 20;
$num2 = 50;
$total = $num1 + $num2;
echo $total;
?>
پیش نمایش
توضیح:
- کد بالا مقدار متغیر total را به خروجی خواهد داد و متغیر total برابر است با حاصل جمع دو متغیر num1 و num2 که اعدادی به دلخواه به آنها داده ایم.
- ملاحظه می کنید که PHP قدرت محاسبه منطقی دارد و می توان با آن از ترکیب چند مقدار یک مقدار جدید به دست آورد، این مثال ها اولیه و ساده هستند اما ما را با دنیای جدیدی آشنا می کنند که همان داشتن تفکر و هوش منطقی است و رفته رفته ذهنمان را برای نوشتن برنامه های سیستماتیک، طراحی الگوریتم ها و ساختارهای پیچیده تر وب آماده می کنند.
مثالی دیگر:
<?php
$name = 'Webgoo';
if ($name == 'Webgoo'){
    $hi = 'سلام وبگو!';
}
else{
    $hi = 'سلام، لطفا در سایت عضو شوید!';
}
echo $hi;
?>
پیش نمایش
توضیح:
- if (اگر) و else (در غیر اینصورت) برای ایجاد شرط منطقی به کار می روند و علامت == نشان دهنده برابری دو طرف آن است، اینها ابزارهایی است که در دنیای برنامه نویسی به کارمان می آیند و می توانیم به کمک آنها زبان انسان را به زبان ماشین تبدیل کنیم، در تفسیر کد بالا ابتدا متغیر name را با مقادیر از پیش تعریف شده Webgoo مقدار دهی کرده ایم (می تواند هر چیز دیگری باشد)، سپس با شرط if بررسی کرده ایم که اگر متغیر name برابر با مقدار Webgoo باشد، دستور echo داخل شرط if که بین دو علامت {} مشخص است اجرا شود، در غیر اینصورت قسمت else اجرا خواهد شد.
تقریبا هر آنچه که از وب بخواهید با PHP دستیافتنی است، در ادامه مطالب بخش آموزش های مقدماتی PHP در این باره بیشتر خواهیم گفت.
دسته بندی: آموزش مقدماتی » PHP
related مطالب بیشتر:
عملگرها (Operators) در PHP
دستور switch و case در PHP
آرایه (Array) در برنامه نویسی PHP
تعریف و استفاده از متغیر (Variable) در PHP
توابع کار با آرایه در PHP - بخش اول
دیدگاه
more ۱۹۳ دیدگاه برای این مطلب ارسال شده است.
more دیدگاه جدید بر اساس تاریخ ارسال در انتهای دیدگاه های موجود نمایش داده می شود.
روناک قادری
۲۳:۱۰ ۱۴۰۰/۱۲/۲۵
با سلام مجدد و تشکر بسیار فراوان از شما اره همه فهرست لینکی دارن باید به این صورت باشه که هرچی لینک هست حذف بشه و فقط متن بمونه
چکیده. 3
مقدمه : 3
تعریف اخلاق. 5
اخلاق تجاري.. 7
پیشینه تبلیغات.. 8
ضرورت و اهمیت تبلیغات.. 9
موضوعات مطرح شده در اخلاق تجاري : 11
مسئوليت اخلاقي در تجارت.. 14
اصول اخلاقی حاکم برتجارت : 16
الگوي اسلامی و غربی در تبلیغات.. 18
رویه هاي تجاري نامطلوب یا غیرمنصفانه : 19
حالا بعد اجرا دستور خروجی تقریبا اینطوری میشه
چکیده. 3
مقدمه : 3
تعریف اخلاق. 5
7
پیشینه تبلیغات.. 8
9
11
14
16
الگوي اسلامی و غربی در تبلیغات.. 18
19
متن رو هم حذف می کنه واسه متن و نوشته عادی درسته ولی واسه این متن ها که همش لینکه خرابکاری می کنه!
ما به این صورت کد را تست می کنیم و در خروجی مشکلی وجود ندارد:
<?php
$str = file_get_contents('http://dlfile.bazarfile.com/post/5792');
$str = preg_replace('#<a.*?>(.*?)</a>#i', '\1', $str);
echo $str;
?>
در صورت لزوم کد باید در سیستمتان با برنامه TeamViewer اجرا و بررسی شود.
روناک قادری
۱۶:۴۸ ۱۴۰۰/۱۲/۲۶
خیلی ممنون مشکل از من بود درست شد یه سوال دیگه البته ببخشید بخدا شرمنده انقد شما عالی هستید که آدم دلش نمیاد مشکلاتش به شما نگه و شما هم خدا عمرتون بده بدون هیچ چشم داشتی مشکلات بقیه رو حل می کنید
وقتی از الگوی پایین برای preg_replace استفاده می کنم هر چیزی مشابه الگو رو پاک می کنه حتی رنگ استایل فونت یا اینکه بخوام یه قسمت از متن رو وسط چین کنم text-align=center همه چی رو پاک می کنه راهی هست استثنا در این الگو قرار داده بشه؟
مثلا وسط چین کردن و یا رنگ فونت ها و متن
$model->content = preg_replace(array('/ style="(.+?)">(.+?)<\//i','/ br style="(.+?)"><\//i','/ rel="pastemarkerend" (.+?)><\//i'), ">$2</", $model->content));
استفاده از عبارات باقاعده حساسیت زیادی دارد و تغییر جزئی در هر الگو می تواند نتایج متفاوتی داشته باشد، برای تغییر یا رفع ایراد الگوی شما باید نمای کاملی از محتواهایی که قصد دارید الگو را برای آنها اعمال کنید و خروجی مد نظر داشته باشیم، با ذکر این نکته به نظر می توانیم الگو را به شکل های مختلف دقیقتر و محدودتر کنیم که صرفا حالت مد نظر را پوشش دهد و به اشکال مشابه سرایت نکند، به فرض:
'/ style="([^"]+?)">([^<]+?)<\//i','/ br style="([^"]+?)"><\//i','/ rel="pastemarkerend" ([^>]+?)><\//i'
نکته: دستور تست نشده است.
روناک قادری
۱۸:۳۲ ۱۴۰۰/۱۲/۲۶
خیلی ممنون از شما الگوی شما واسه وسط چین کردن الان کار می کنه ولی واسه رنگ فونت استایلش رو حذف می کنه می تونه تست کنید یه الگو بهم بدید! خواهش می کنم چون خیلی خسته ام کرده من میخوام همه چی داخل div و span و p حذف بشه الا دو تا چیز رنگ فونت و استایل text-align بقیه هرچی باشه حذف بشه اشکالی نداره
الان الگوی شما رو تست کردم دستتون درد نکنه واسه text-align جواب داد خیلی ممنون که جوابگو هستید
انشاءالله خدا درهای بیشماری رو براتون به بهشت باز کنه
لطفا یک نمونه سورس خام و خروجی مورد انتظار از آن را درج کنید تا بر اساس آن الگو اصلاح شود، صرف توضیحات کمک زیادی به حل این مشکل نمی کند.
روناک قادری
۰۰:۱۸ ۱۴۰۰/۱۲/۲۷
سلام
ببخشید توروخدا
متن که کپی می کنم سورسش اینطوریه
<p style="margin: 10px 0px 0px; color: rgb(105, 105, 105); text-align: justify;">برخی از لوازم برقی زیبایی بی نظیری را به مو ها می دهد. یکی از دغدغه های خانم های شیک و آراسته داشتن موهایی زیبا است. یکی از لوازم رسیدگی و مراقبت از مو سشوار است که حتی در مواقع ضرور و رفتن به مهمانی موهای لخت و کم حجم را می توان با کمک آن پرحجم یا موهای پرحجم و شکننده را با کمک آن زیبا کرد.</p>

<p style="margin: 10px 0px 0px; color: rgb(105, 105, 105); text-align: justify;">حال باید در انتخاب سشوار برای موهایمان دقت کافی را داشته باشیم که به موهایمان آسیب نرسد.<span rel="pastemarkerend" id="pastemarkerend48407"></span></p>
کلی اضافات داره من می خوام همه استایل های این متن حذف بشه با الگوی که اول براتون فرستادم و شما لطف کردید اصلاح کردید میخوام وقتی ذخیره می کنم در بهترین حالت اینطوری بمونه
<p>برخی از لوازم برقی زیبایی بی نظیری را به مو ها می دهد. یکی از دغدغه های خانم های <b>شیک و آراسته داشتن موهایی</b> زیبا است. یکی از لوازم رسیدگی و مراقبت از مو <span style="color: #0b10f9;">سشوار</span> است که حتی در مواقع ضرور و رفتن به مهمانی موهای لخت و کم حجم را می توان با کمک آن پرحجم یا موهای پرحجم و شکننده را با کمک آن لخت و زیبا کرد.</p>

<p style="text-align: center;"><b><span style="color: #0b10f9;">حال باید در انتخاب سشوار برای موهایمان دقت کافی را داشته باشیم که به موهایمان آسیب نرسد.</span></b></p>
چیزهایی که واسه من مهمه بولد کردن و تݝییر چینش وسط چپ و راست متن و text-align و رنگ فونته color بقیه هرچی توی div و span و p هستند حذف بشن نمی دونم میشه یا نه!
'/ style="([^"]+?)">([^<]+?)<\//i','/ br style="([^"]+?)"><\//i','/ rel="pastemarkerend" ([^>]+?)><\//i'
متاسفانه الگوی شما ثابت و از قبل قابل پیش بینی نیست، در خط اول text-align و رنگ در خروجی حذف شده اما در خطوط آخر text-align و رنگ در خروجی وجود دارد، همچنین در خطوط اول متن خروجی برای واژه "سشوار" تگ span خروجی داده شده که نمی شود الگوی منطقی برای آن تعریف کرد، همچنین در خطوط آخر مشخص نیست مبنای اعمال تغییرات چیست، حداقل در نگاه اجمالی این موارد با هوش منطقی قابل تعریف نیست و باید توسط هوش انسان تغییر داده شوند! برای استفاده از عبارات باقاعده ابتدا باید الگوهای ورودی و خروجی منطقی ثابت داشته باشیم.
شهرام خداپرست
۰۷:۱۱ ۱۴۰۰/۱۲/۲۷
با سلام و خسته نباشید استاد
ببخشبد مزاحم شدم با این توضیحات میشه یه کد کوچیک نوشت که من موجودی خودم رو توی سایت نوبیتکس توی سایت خودم با اون فراخوانی کنم؟ می خواهم وقتی سایت خودم رو باز می کنم موجودی خودم رو اونجا ببینم این مستنداتشه
موجودی
curl 'https://api.nobitex.ir/users/wallets/balance' \
-X POST \
--header "Authorization: Token yourTOKENhereHEX0000000000" \
--data '{"currency":"ltc"}'
در صورت فراخوانی درست، پاسخ به این صورت خواهد بود:
{
"balance": "10.2649975000",
"status": "ok"
}
برای دریافت موجودی کیف پول های خود در نوبیتکس (شامل کیف پول ریالی و کیف پول های رمز ارزی) از این نوع درخواست استفاده نمایید:
آدرس : POST /users/wallets/balance
پارامترها :
پارامتر نوع پیش‌فرض توضیحات نمونه
currency string الزامی نوع کیف پول (ارز) ltc
مقدار بازگشتی برای موجودی، یک عدد است که به صورت string برگردانده میشود. این مقدار می‌تواند اعداد اعشاری زیادی داشته باشد.
اگر قصد محاسبات مهمی بر روی این اعداد را دارید، پیشنهاد ما این است که از انواع fixed precision برای نگهداری این اعداد استفاده کنید
البته شرمنده جای دیگه ای سراغ نداشتم بپرسم فقط یه کد ساده می خوام که موجودی رو اونجا ببینم
با تشگر فراوان
متاسفانه کد آماده ای برای این API در دسترس نداریم، نوشتن کد برای این هدف کمی زمانبر است و نیاز به Token معتبر جهت تست دارد، در صورت تمایل می توانید از طریق ایمیل "موجود در بخش تماس" موضوع را پیگیری کنید، اگر خیلی زمانبر نباشد برایتان انجام می شود در غیر اینصورت نیاز به ثبت سفارش دارد.
تیموری
۱۱:۲۷ ۱۴۰۱/۰۱/۰۴
بخشید استاد سلام
آیا راهی وجود داره تفاوت دو تا متن رو با php تشخیص داد؟ مثلا تفاوت
a have a book
با
a have not book
؟ توی سایت من کاربرا که مطلبی رو ویرایش می کنن ثبت میشه که متن اولیه چی بوده و بعد متن جدید چی هست بخوام تفاوت رو بببنم باید چشمی همیشه کلی متن بخونم تا تفاوت رو پیدا کنم که کاربرا کجاها رو دستکاری کرده واسه همین روزگارم فقط شده این که تفاوت متن هارو چک کنم که کاربران متن ناجور نذارن کاش راهی باشه تفاوت دو متن رو پیدا کنه مثل compare در نت پد ++
متاسفانه راه حل ساده ای برای این مشکل در دسترس نداریم و چند اسکریپت را که تست کردیم خیلی به درستی عمل نمی کردند تا معرفی کنیم، به نظر مثل برنامه Notepad++ انجام این مورد هم نیازمند نوشتن افزونه با JavaScript باشد.
امیرحسین
۰۲:۲۶ ۱۴۰۱/۰۵/۱۲
سلام وقت بخیر، من میخواستم داخل شی گرایی php وقتی یک متودی صدا زده میشه چک کنه ببینه اجازه اجرا شدنو داره یا خیر یعنی وقتی متود از یک شی صدا زده میشه قبلش یکاری کنه بعد صدا زده بشه اون یکار اینه که چک کنه اجازه همچین کاریو داره یا نه اگه داشت صدا زده بشه اگه نداشت اجازه نده
یه چیزی شبیه متود جادویی call میخوام ولی متاسفانه کال رو متودهایی کار میکنه که تعریف نشده باشن داخل شی، ولی من میخوام وقتی تعریف هم شده باشن بازم متود جادویی call صدا زده بشه یه چیزی شبیه میدلورها داخل لاراول میخوام میتونم یه متود به نام کال داخل شی پرنت تعریف کنم اینجوری متود رو صدا بزنم
$this->callMethod('sendMessage');
و این متود چک کنه اجازه داشت متود سند مسیج رو خودش اجرا کنه ولی بازم اینو نمیخوام چون اسم متود یه رشته میشه امکان اشتباه پیش میاره
یک راه حل در مورد حالت مد نظر شما استفاده از متدهای Private در کلاس و فراخوانی آنها در بیرون از کلاس است، به این صورت هم متد call اجرا می شود:
<?php
class MyClass {
public $access;

function __construct($access){
$this->access = $access;
}

private function method(){
echo '1<br>';
}

public function __call($method, $params) {
if(method_exists($this, $method)) {
if($this->access === true){
$this->method();
//return call_user_func_array(array($this, $method), $params);
} else {
echo 'Access denied!';
}
}
}
}
$obj = new MyClass(true);
$obj->method();
?>
در کل شاید برای هدفتان بتوانید ساختار بهتری در برنامه پیاده سازی کنید و نیاز به این حالت هم نباشد.
امیرحسین رستمی
۲۲:۴۰ ۱۴۰۱/۱۱/۰۵
سلام وقت بخیر
$array = ['ت', 'ح', 'ا', 'ی', 'ر', 'ج'];
یه همچین ارایه ای داریم میخوام همه حالت های حروفو بدست بیارم مثل بازی کلماتیک که هر حرف دوبار تکرار نشه مبحثشو تو امار خونده بودم کیا یادشونه همچین کدی با پی اچ پی بخوام بزنم چی سرچ کنم تو گوگل میشه جواب کدشو واسم بفرستید شما ممنون
احتمالا منظورتان جایگشت یا ترکیب (Combination) است، برای بدست آوردن تمام ترکیب های احتمالی حروف در قالب آرایه می توانید از نمونه تابع PHP آماده زیر استفاده کنید که در وب در دسترس است:
<?php
function wordCombos($words){
if(count($words) <= 1){
$result = $words;
} else{
$result = array();
for($i = 0; $i < count($words); ++$i){
$first_word = $words[$i];
$remaining_words = array();
for($j = 0; $j < count($words); ++$j){
if($i <> $j) $remaining_words[] = $words[$j];
}
$combos = wordCombos($remaining_words);
for($j = 0; $j < count($combos); ++$j){
$result[] = $first_word . ' ' . $combos[$j];
}
}
}

//return
return $result;
}
$array = ['ت', 'ح', 'ا', 'ی', 'ر', 'ج'];
var_dump(wordCombos($array));
?>
امیرحسین
۰۹:۲۰ ۱۴۰۲/۰۶/۰۹
سلام وقت بخیر
من یک برنامه نوشتم که از ایپی ای گوگل کمک میگیره و متن میدم بهش و ترجمه میکنه : شما فرض کن یه همچین متنی داریم برای ترجمه:
💥تعداد ادهای جدید شما :
👤 [:userCount] نفر 👤
💥تعداد سکه های دریافتی جدید شما:
💰 [:coinGift] سکه 💰
💥جمع کل ادهای شما تا کنون در این گروه :
👤👤 [:adds] نفر 👤👤
💥💥جمع کل سکه های دریافتی شما تا کنون در این گروه :
💰💰 [:coinReceive] سکه 💰💰

📅: امروز [:date]
⏰: ساعت [:time]
من میخوام متن های فارسی رو فقط ترجمه کنه یه همچین کدی نوشتم : (البته کد های ترجمه رو نفرستادم فقط کد هایی که به مترجم ارسال میشه)
preg_replace_callback('/[آ-ی]+/u', function($matches){
print_r($matches);
echo "\n\n\n";
}, $text);
این کد میاد تک تک کلمه های فارسیو انتخاب میکنه و به مترجم میفرسته، حالا من نمیخوام کلمه کلمه انتخاب کنم، میخوام جمله جمله انتخاب کنم به صورت جدا ارسال بشه چه عبارت با قاعده ای بزنم ؟
امیرحسین رستمی
۱۶:۵۰ ۱۴۰۲/۰۶/۰۹
سلام وقت بخیر
من یک عبارات با قائده ای میخوام که این متن رو :
      amir hossein rostami     
در نظر بگیرید اول و اخر متن فضای خالی وجود داره میخوام متن وسطشو با عبارت دیگه ای عوضش کنم ولی میخوام فضای اول و اخرش هرچند تا که هست حفظ بشه
(\s+)([\w ]+)(\s+)
من همچین عبارتی در نظرم هست ولی فضای خالی آخر متن حفظ نمیشه تعدادش
برای حل این مشکل عبارت باقاعده را به شکل زیر تغییر دهید:
(\s+)(\b[\w ]+\b)(\s+)
مثال:
<?php
$str = ' your example text ';
$str = preg_replace('/(\s+)(\b[\w ]+\b)(\s+)/im', '$1test$3', $str);
echo $str;
?>
امیرحسین رستمی
۱۷:۲۹ ۱۴۰۲/۰۶/۰۹
در رابطه با دوتا سوال قبلی من این کد رو نوشتم شما بررسی کنید ببینید اگه مشکل دیگه ای نداره ، درست داره کار میکنه ببینید درست نوشتم ؟
<?php
$text = '
💥تعداد ادهای جدید شما :
👤 [:userCount] نفر 👤
💥تعداد سکه های دریافتی جدید شما:
💰 [:coinGift] سکه 💰
💥جمع کل ادهای شما تا کنون در این گروه :
👤👤 [:adds] نفر 👤👤
💥💥جمع کل سکه های دریافتی شما تا کنون در این گروه :
💰💰 [:coinReceive] سکه 💰💰

📅: امروز [:date]
⏰: ساعت [:time]

❤️📤 : به قسمت ارسال پیام در گروه خوش آمدید

✔️: نام گروه [:title]

[$HIDDEN_PERSIAN]➖➖➖➖➖➖

[@message=0?⬜️:☑️] پیام: [@message=0?ست نشده:دارد]

[@timer=0?⬜️:☑️] تایمر حذف خودکار : [@timer=0?ست نشده:@timer دقیقه]

[@menu=0?⬜️:☑️] دکمه شیشه ای : [@menu=0?ست نشده:@menu مورد]

[$HIDDEN_PERSIAN]➖➖➖➖➖➖
'
;

echo preg_replace_callback('/[آ-ی ]+/u', function ($matches) {
if(trim($matches[0]) == '')
return $matches[0];
else {
$left = '';
if(preg_match('/^(\s+)[آ-ی]/u', $matches[0], $match))
$left = $match[1];

$right = '';
if(preg_match('/[آ-ی](\s+)$/u', $matches[0], $match))
$right = $match[1];


$text = trim($matches[0]);

$text = GoogleTranslate::translate('fa', 'en', $text);

return "{$left}{$text}{$right}";
}
}, $text);

class GoogleTranslate {

public static function translate($from, $target, $text): string {
echo $text . " ";

$response = self::requestTranslation($from, $target, $text);
return self::getSentencesFromJSON($response);
}

protected static function requestTranslation($source, $target, $text): string {
$url = "https://translate.google.com/translate_a/single?client=at&dt=t&dt=ld&dt=qca&dt=rm&dt=bd&dj=1&hl=es-ES&ie=UTF-8&oe=UTF-8&inputm=2&otf=2&iid=1dd3b944-fa62-4b55-b330-74909a99969e";

$fields_string = http_build_query([
'sl' => $source,
'tl' => $target,
'q' => $text
]);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'AndroidTranslate/5.3.0.RC02.130475354-53000263 5.1 phone TRANSLATE_OPM5_TEST_1');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Length: ' . strlen($fields_string))
);

$result = curl_exec($ch);
curl_close($ch);

return $result;
}

protected static function getSentencesFromJSON($json): string {
$sentencesArray = json_decode($json, true);

$sentences = "";
foreach($sentencesArray["sentences"] as $s) {
if(!isset($s['trans']))
continue;

$sentences .= $s["trans"];
}

return $sentences;
}
}
?>
با استفاده از
print_r($matches);
در تابع preg_replace_callback مشخص است کد مطابق هدف شما عمل می کند، ظاهرا که مشکلی وجود ندارد.
نکته: با توجه به درج سوال شما در قسمت یادداشت ها، پاسخ و کدها انتشار عمومی شده اند، در صورت نیاز و شخصی بودن اطلاعات API لطفا عنوان کنید تا قسمت مد نظر از کدها مخفی شوند.
امیرحسین رستمی
۰۰:۰۱ ۱۴۰۲/۰۶/۱۱
سلام وقت بخیر
من این متنو دارم:
💥تعداد «ادهای» جدید شما : 
👤 [:userCount] نفر 👤
💥تعداد هر 20 سکه های دریافتی (جدید) شما:
💰 [:coinGift] سکه 💰
💥جمع کل ادهای شما تا کنون در این [گروه] :
👤👤 [:adds] نفر 👤👤
💥💥جمع کل سکه های دریافتی شما تا کنون در این گروه :
💰💰 [:coinReceive] سکه 💰💰

📅: امروز [:date]
⏰: ساعت [:time]
میخوام فقط متن های فارسی رو انتخاب کنم با preg_match و متن جایگزین براش بزارم قبلا یه سری کد فرستادم واستون در مورد ترجمه متون اون کد یه مشکلی داشت ، اگه داخل متن عدد یا پرانتز یا کروشه یا نمادهای دیگه رو داشته باشه به مشکل میخوره و نمیتونه انتخاب کنه لطفا یه کد عبارت با قائده preg_replace_callback واسم بدید که بتونم به درستی فقط متن های فارسیو انتخاب کنم و جایگزین کنم ، ایموجی هارو نمیخوام سلکت کنه
امیرحسین رستمی
۰۱:۳۶ ۱۴۰۲/۰۶/۱۱
سلام مجدد وقت بخیر
لطفا لینک زیر را ببینید میخوام تمام متن های فارسی که اینجا انتخاب کردم رو با عبارت با قائده انتخاب و جایگزین کنم (میخوام بفرستم ترجمه بشه اون متن ها)
علائم
+-.؟)(!#
بین متون را هم میخوام سلکت کنه مثلا:
سلام کاربر عزیز!
یا سلکت نکنه فقط متنای فارسی رو انتخاب کنه
https://tejaratkhane.site/12123232.png
در کل خودت ببین کدوما رو بهتره سلکت کنه در کل متن های داخل [] که خاصیت جایگزینی دارن رو نمیخوام ترجمه کنه (مثل لاراول)
درضمن اگه هزینه ای هم لازم بود براتون میزنم شماره کارت بدید
این قسمت را به شکل زیر جایگزین کنید ببینید مشکل رفع می شود؟
echo preg_replace_callback('/[آ-ی \+\-\.\؟\)\(\!\#]+/u', function ($matches) {
if(trim($matches[0]) == '')
return $matches[0];
else {
$left = '';
if(preg_match('/^(\s+)[\+\-\.\؟\)\(\!\#آ-ی]/u', $matches[0], $match))
$left = $match[1];

$right = '';
if(preg_match('/[آ-ی\+\-\.\؟\)\(\!\#](\s+)$/u', $matches[0], $match))
$right = $match[1];


$text = trim($matches[0]);

$text = GoogleTranslate::translate('fa', 'en', $text);

return "{$left}{$text}{$right}";
}
}, $text);
عبارت باقاعده یک ایراد جزئی دیگر هم داشت که کاراکتر "آ" را شامل نمی شد.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
7 × 2
20 × 20
=
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
بهاره هوشمندی
سلام استاد خسته نباشید ببخشید باز مزاحم شدم اگه من بخوام از تگ strip_tags استفاده کنم و استثنا قائل بشم استایل های اون...
۱۴۰۲/۰۹/۱۰

معراج
سلام من در قدیم‌ سیستم‌ مدیریت محتوا استفاده میکردن که وقتی متغیر بدون محتوا ایجاد میکردی ارور نمیداد و‌ نیازی هم به @ قبلش...
۱۴۰۲/۰۹/۰۸

ابوالفضل
سلام استاد وقتتون بخیر مثل همیشه من با یک مشکل بزرگ مواجه شدم و مجدد مزاحمتون میشم من به یک regex نیاز دارم تا...
۱۴۰۲/۰۹/۰۶

بهاره هوشمندی
استاد ببخشید وقتی یه متن طولانی رو باهاش چک می کنم اگه تگ span و b داشته باشه چون تگ رو نمی بنده تا...
۱۴۰۲/۰۹/۰۲

بهاره هوشمندی
با سلام استاد بزرگوار از لطف و محبت شما بسیار ممنون و سپاسگزارم خیلی عالی بود اینطوری خیلی خوب شد دستتون درد نکنه...
۱۴۰۲/۰۹/۰۱

بهاره هوشمندی
با سلام و از شما من این کد رو امتحان کردم واسه متن عادی خوبه و جواب میده ولی واسه متن طولانی که رنگ...
۱۴۰۲/۰۹/۰۱

بهاره هوشمندی
با سلام و خسته نباشید استاد بزرگوار آیا راهی وجود داره تفاوت دو تا متن رو با php پیدا کرد؟ مثلا با...
۱۴۰۲/۰۸/۳۰

مهراد
سلام در جدول موقعی که عکس رو با php فراخوانی میکنم نمیاره تصویر عکس. لطفا راهنمایی کنید.
۱۴۰۲/۰۸/۱۷

بهاره هوشمندی
با سلام و درود استاد بزرگوار یه مشکل برام پیش اومده توی مطالب ارسالی سایت محتوایی به این صورت به متن ها اضافه شده...
۱۴۰۲/۰۸/۱۷

بهاره هوشمندی
با تشکر از شما استاد گرامی پس کد رو باید اینطوری وارد کنم؟ اینطوری واسه من کار می کنه سپاسگزارم از شما...
۱۴۰۲/۰۸/۰۹

بهاره هوشمندی
با سلام از لطف و محبت شما بسیار ممنون و سپاسگزارم دست شما درد نکنه لینکهای شما رو بررسی کردم یعنی باید کل کدهایی...
۱۴۰۲/۰۸/۰۸

بهاره هوشمندی
با سلام و تشکر از شما من توی یه صفحه خالی هم امتحان کردم و یه amar.html هم توی پوشه root هاست ساختم بازم...
۱۴۰۲/۰۸/۰۸

بهاره هوشمندی
با سلام با تشکر از شما من کاری که گفتید رو انجام دادم ولی بازم صفحه لاگین رو که میزنم باز آمارگیر اونو...
۱۴۰۲/۰۸/۰۸

بهاره هوشمندی
سلام خسته نباشید من یه کد واسه آمارگیر دارم که جاو هست از سایت وبگذر بعد توی همه صفحه ها فعاله چطوری می تونم...
۱۴۰۲/۰۸/۰۷

hossein
سلام وقت شما بخیر کدی هست که بشود با کمک اون، به محض حذف محصول توسط فروشندگان (افزونه دکان)، تصاویر محصول نیز حذف شوند...
۱۴۰۲/۰۷/۲۵

امیر علی برغمدی
آقا متچکرم ممنونم
۱۴۰۲/۰۷/۱۶

hossein
سلام وقت شما بخیر ممنون میشم اگه راهنماییم کنید میخوام کدی در اختیارم بزارید که بتونه برام سقف درصد مدیر را تعیین کنه توی...
۱۴۰۲/۰۷/۱۴
  در انتظار بررسی: ۱
 پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.