اعتبار سنجی مقادیر داخل متغییرها در #PHP
استفاده از تابع
استفاده از تابع
filter_var
مثال: چک میکند که داده ورودی از نوع عددی است یا خیر:if (filter_var(10, FILTER_VALIDATE_BOOLEAN))مثال: چک میکند که داده ورودی یک آدرس ایمیل معتبر میباشد یا خیر:
{ ... }
if (filter_var('info@gmail.com', FILTER_VALIDATE_EMAIL))
{ ... }
#بکاند #سطح_مبتدیدر #react برای استفاده از شرط ها در #JSX می تونید از do expression که به تازگی در ECMAScript اضافه شده استفاده کنید. این ویژگی هنوز در stage-1 هست و در حال حاضر فقط در صورتی که از یک transpiler (مثل babel) استفاده می کنید قابل اجراست.
const aComponent = () => {
return (
<div>
{
do => {
if (condition && condition2 && !consition3) {
if (consition4) {
<p>foo</p>
} else if (condition5) {
<p>bar</p>
} else {
<p>baz</p>
}
} else {
<p>qux</p>
}
}
}
</div>
)
};
#سطح_پیشرفتهGitHub
GitHub - tc39/proposal-do-expressions: Proposal for `do` expressions
Proposal for `do` expressions. Contribute to tc39/proposal-do-expressions development by creating an account on GitHub.
در #Javascript از این راه برای کوتاه کردن کد بدون نوشتن صفرهای متوالی در اعدا استفاده کنید
for (let i = 0; i < 1e7; i++) { ... }
تمام این موارد true برمی گردونه1e0 === 1;
1e7 === 10000000;
2e1 === 20;
2e2 === 200;
#سطح_متوسطکپی گرفتن از یک جدول در #SQL
توسط دستور زیر میتوانید، ساختار یک جدول را کپی کرده و یک جدول جدید مانند جدول قبل خواهید داشت.
توسط دستور زیر میتوانید، ساختار یک جدول را کپی کرده و یک جدول جدید مانند جدول قبل خواهید داشت.
-- Copy structure and data#بانک_اطلاعاتی #mssql #سطح_مبتدی
SELECT * INTO NewTbl FROM Tbl1
-- Copy structure only
SELECT * INTO Tbl1_Copy FROM Tbl1 WHERE 1=0
-- Copy structure only
SELECT TOP(0) * INTO Tbl1_Copy FROM Tbl1
در #javascript از نحوه دستوری Destructuring assignment برای ذخیره مقادیر ایندکس های موردنظر از یک آرایه در چند متغیر طی یک دستور استفاده کنید:let colors =
['red', 'green', 'blue', 'black', 'purple'];
const [ , , thirdColor, , fifthColor] = colors;
console.log(thirdColor); // blue
console.log(fifthColor); // purple#destructuring_assignment #سطح_متوسط
👍1
تبدیل آرایه به CSV در #PHP
function array2csv($input, $delimiter = ',', $enclosure = '"')#بکاند #آرایه #CSV #سطح_پیشرفته
{
$fp = fopen('php://temp', 'r+');
fputcsv($fp, $input, $delimiter, $enclosure);
rewind($fp);
$data = fread($fp, 1048576);
fclose($fp);
return rtrim($data, "\n");
}
در #Javascript برای پیداکردن بیشترین مقدار در یک آرایه لازم نیست حتما از حلقه استفاده کنید. فقط آرایه رو با استفاده از spread operator ها به تابع ()Math.max پاس بدید:
#سطح_متوسط #spread_syntax
let values = [1, 999, 2];می تونید اعداد دیگه رو هم برای مقایسه با مقادیر آرایه اضافه کنید
Math.max(...values);
Math.max(...values, 1000, 998);یکی از کاربردهای این ترفند می تونه تعیین مقدار پیش فرض برای متغیرها باشه. در این مثال اگر عدد مثبت پیدا نشد مقدار پیش فرض صفر داده میشه
let negatives = [-123, -456, -789];
const aValue = Math.max(...negatives, 0);#سطح_متوسط #spread_syntax
👍1
در #CSS با این روش میتوانید هر جایی از صفحه را کاری کنید که با ماوس قابل انتخاب کردن نباشد:
.no-select {
-moz-user-select: -moz-none;
-moz-user-select: none;
-o-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
#فرانتاند #سطح_متوسط👍1
تابع ()setState در #react بصورت ناهمگام (asynchronous) اجرا می شود و باعث مشکلاتی می شود بعنوان مثال:
this.setState({count: this.state.count + 1});
this.setState({count: this.state.count + 1});
this.setState({count: this.state.count + 1});
// this.state.count === 1, not 3
برای حل این مشکل یک تابع به ()setState پاس بدید:this.setState(prevState => ({ count: prevState.count + 1 }));
#سطح_متوسطتبدیل اعداد فارسی به انگلیسی در #javascript
const digits = '۰۱۲۳۴۵۶۷۸۹';
digits.replace(/[\u0660-\u0669\u06f0-\u06f9]/g,
function(c) {
return c.charCodeAt(0) & 0xf;
});
#کار_با_اعداد #سطح_متوسط❤1
روشی برای پاس ندادن پارامترهای میانی در #javascript
function method (p1, p2, p3, p4) {
console.log(
`${p1} ${p2} ${p3} ${p4}`);
}
method(...['first', , , 'last']);
#spread_syntax #سطح_متوسطهتوسط این تابع در #PHP میتوان چک کرد که آدرس #ایمیل وارد شده صحیح است یا خیر؟
#بکاند #سطح_پیشرفته
function isValidEmail($email)نکته: این تابع DNS سایت ارائه دهنده ایمیل را چک میکند تا آدرس ایمیل fake نباشد.
{
// Check email format
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}
list($user, $host) = explode("@", $email);
//check, if host is accessible
if (!checkdnsrr($host, "MX") && !checkdnsrr($host, "A")) {
return false;
}
return true;
}
#بکاند #سطح_پیشرفته
هر دوی این توابع در #javascript اعداد انگلیسی را به فارسی تبدیل می کنند البته با این تفاوت که تابع دوم کلیه حروف بجز اعداد را از رشته وردی حذف می کند:
تابع اول:
تابع اول:
function toFarsiNumber(n) {
const farsiDigits =
['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];
return n
.toString()
.replace(/\d/g, x => farsiDigits[x]);
}
تابع دوم:function toFarsiNumber(n) {
const farsiDigits =
['۰','۱','۲','۳','۴','۵','۶','۷','۸','۹'];
return n
.toString()
.split('')
.map(x => farsiDigits[x])
.join('');
}
خروجی تابع اول:toFarsiNumber('Two or 2 ?'); // Two or ۲ ?
خروجی تابع دوم:toFarsiNumber('Two or 2 ?'); // ۲
#سطح_متوسطچرا در #javascript باید یجای اپراتورهای '==' و '===' از ()Object.is استفاده کنیم؟
به خروجی این شرط ها نگاه کنید:
به خروجی این شرط ها نگاه کنید:
0 == ' ' //trueشاید برای حل این مشکل از اپراتور '===' بجای '==' استفاده می کنید اما این راه حل همه جا جواب نمیده، بعنوان مثال:
null == undefined //true
[1] == true //true
NaN === NaN //falseدر حالیکه خروجی ()Object.is برای تمام موارد مقدار قابل قبول تری هست:
Object.is(0 , ' '); //false
Object.is(null, undefined); //false
Object.is([1], true); //false
Object.is(NaN, NaN); //true
#سطح_متوسط👍1
استفاده از اپراتور + قبل از مقادیر در #javascript معادل استفاده ار تابع ()Number است:
0 === Number(null); // trueخروجی مقادیر پایین معادل خروجی تابع ()Number بجای اپراتور + است:
console.log(+'123'); // 123#سطح_مبتدی
console.log(+null); // 0
console.log(+true); // 1
console.log(+false); // 0
console.log(+[]); // 0
console.log(+[123]); // 123
console.log(+new Date); // 1527790306576
👍1
یک مثال از کاربرد تیپ قبلی: زمانی که نیاز به مقایسه مقادیر با ورودی های یک وب فرم مثل المنت های input، select و ... هستیم.
#سطح_مبتدی #javascript
let today = new Date();
if (+form.month.value == (today.getMonth() + 1) &&
+form.day.value == today.getDate()) {
// happy birthday 🎂
// ...
}
روشی جالب برای استفاده از دستور Switch Case در #PHP
$age = 15;#بکاند #سطح_متوسط
switch (true){
case ($age >= 1 && $age <= 12):
echo 'Child';
break;
case ($age >= 13 && $age <= 19):
echo 'Teenager';
break;
case ($age >= 20):
echo 'Adult';
break;
}
حذف مقادیر تکراری از آرایه بدون استفاده از حلقه ها : #javascript
روش اول:
روش اول:
let noDupe = (arr) =>ٰروش دوم: استفاده از Set و #spread_operator که در ES2015 اضافه شده اند ( برای کار در IE و یا نسخه های پایین Firefox و Chrome نیاز به transpiler دارید)
arr.filter((item, i) =>
arr.indexOf(item) >= i);
const noDupe = arr => [...new Set(arr)];
خروجی هر دو روش:noDupe([1,2,2,1,3]); //[1,2,3];
#سطح_متوسط #spread_syntaxدر #php برای پردازش یک آدرس #URL نیازی به نوشتن #Regex نیست و میتوان از توابع موجود استفاده کرد.
برای بدست آوردن قسمت های مختلف یک آدرس URL میتوان از دستور زیر استفاده کرد:
برای بدست آوردن قسمت های مختلف یک آدرس URL میتوان از دستور زیر استفاده کرد:
$url = 'http://example.com/path1/path2?var1=1000&var2=ali';یا اگر فقط قسمت خاصی از URL را نیاز داشتید:
$parsed = parse_url($url);
// Output:
// array (
// 'scheme' => 'http',
// 'host' => 'www.example.com',
// 'path' => '/path1/path2',
// 'query' => 'var1=1000&var2=ali'
// )
$parsed = parse_url($url, PHP_URL_HOST);#بکاند #سطح_متوسط
// Output: example.com