PDA

View Full Version : سوال در باره ی preg_match



snbb000
دوشنبه 23 بهمن 1391, 21:52 عصر
سلام
میشه توی preg_match ها از متغییر هم استفاده کرد؟
مثلا یه همچین چیزی

preg_match("/$x/",....);

eshpilen
دوشنبه 23 بهمن 1391, 22:24 عصر
چرا نمیشه!

snbb000
دوشنبه 23 بهمن 1391, 22:34 عصر
نه منظورم این هست که مثلا اینطوری نوشت .
مثلا این درست هست؟


@^$x(?:http://)?([^/]+)@i

به $x توجه کنید

ahmadkavand
شنبه 28 بهمن 1391, 11:15 صبح
با سلام خدمت همه اساتید و دوستان
من می خواستم با تابع preg_match ورودی هام رو چک کنم.ولی همش یه جایی رو اشتباه می کنم

1- می خوام ورودی هام فقط حروف باشند
2-میخوام ورودی هام فقط عدد باشند
3-میخوام ورودی هام اون چیزایی باشند که می خوام.مثلا این تعداد حروف یا این تعداد عدد با این علامت ها

ممنون میشم کمکم کنید

رضا قربانی
دوشنبه 30 بهمن 1391, 01:28 صبح
چیزایی که نیاز داری قبلا اینجا توضیح دادم : http://barnamenevis.org/showthread.php?358191-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%B1%DA%AF%D9%88%D9%84%D8%A7%D8%B1-%D8%A7%DA%A9%D8%B3%D9%BE%D8%B1%D8%B4%D9%86-Regular-expression
موفق باشید

ahmadkavand
دوشنبه 30 بهمن 1391, 11:42 صبح
با تشکر از اقای قربانی در تایپیک قبل

اما مشکل بعدی من راجع به دست آوردن تعداد افراد آنلاین و تعداد افراد لاگین کرده هستش.تایپیک های زیادی هست ولی خواستم روش خودمو چک کنم

یه کد نوشتم که تعداد افرادی که وارد سایت میشن رو بهم نشون میده. یعنی میاد واسه هر کدوم یه سشن که مقدارش برابر با نوع سیستم عامل و ای پی و ....هست رو درون دیتا بیس می فرسته و تعداد رو نشون میده. حالا نمی دونم چه کدی بنویسم که وقتی از سایت خارج میشن از تعداد یکی کم کنم
<?php

$clientstring = $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'];
$_SESSION['client'] = md5($clientstring);
$client=$_SESSION['client'];
$sql="SELECT * FROM guess where client='$client'";
$result=mysql_query($sql);
if(mysql_num_rows($result)==0)
{

$sql="INSERT INTO guess(client)VALUES('$client')";
$result=mysql_query($sql);
}

$sql1="SELECT * FROM guess";
$result=mysql_query($sql1);
$total=0;
while($row=mysql_fetch_assoc($result))
{
$total+=1;

}
print($total);



?>

و مورد بعدی هم راجع به تعداد افراد لاگین کرده است. که تعدادش رو از روی دیتابیس می خونه و موقع logout کردن از دیتابیس حذف میشه. اما می خواست بدونم اگه دکمه logout رو نزد و خود سایت رو بست چطور از دیتابیس حذف بشه
<?php
$con = mysql_connect('localhost','root','');
mysql_query("set names 'utf8'");
mysql_select_db("dbmassage", $con);

$sql="SELECT * FROM `numlogin`";
$result=mysql_query($sql);
$num=0;
while($row=mysql_fetch_assoc($result))
{
$num+=1;

}
print($num);

?>


ممنون از همه دوستان

Reza1607
دوشنبه 30 بهمن 1391, 12:28 عصر
براي نمايش افراد آنلاين با ديتابيس به نظرم روش زير رو در نظر بگيريد

زماني كه هر كاربر وارد سايت ميشه ( چه لاگين كرده باشه چه نكرده باشه) سشن آي دي اش رو داخل ديتابيس به همراه اطلاعات ديگه مثل آي پي سيستم عامل و ... به همراه زمان ثبت سشن رو داخل يك جدول ذخيره كن
البته ساختار جدولت رو به صورتي بگير كه اگه اطلاعات تكراري بود آپديت بشه نه اينسرت به خاطر اين كه حجم جدول خيلي نشه

بعد براي نمايش از كوئري زير استفاده كن

$query='SELECT COUNT(`id`) FROM `tbl_session` WHERE `date` > '.(time()-60*10);
يعني اون ركورد هايي رو شمارش كن كه تا 10 دقيقه پيش ايجاد يا آپديت شدن

و يك توصيه ديگه هر روز در انتهاي روز يعني ساعت (00:00:00) اين جدول رو پاك كن :لبخند:
البته قبلش شمارش ها رو انجام بده و داخل يك جدول ديگه ذخيره كن

رضا قربانی
دوشنبه 30 بهمن 1391, 21:14 عصر
با تشکر از اقای قربانی در تایپیک قبل دکمه تشکر رو واسه چی گذاشتن ؟

ahmadkavand
پنج شنبه 10 اسفند 1391, 19:10 عصر
با سلام خدمت همه اساتید
توی چند پیام قبل در مورد تابع preg پرسیدم که آقای قربانی جواب دادند و به اشتباهم پی بردم و بسیار استفاده کردم

اما تنها مشگلی هست اینه که خیلی ها ساختار این تابع رو نمی دونم از جمله خود من. مثلا چطور میشه از ورود کاراکترهایی مثل!@#$%^&* ...غیره رو گرفت و هم اجازه ورود داد بهشون

ممنون میشم کمکم کنید

ahmadkavand
پنج شنبه 01 فروردین 1392, 00:16 صبح
سلام
دوستان چطور میشه توی preg_match اجازه ورود کاراکتر های فارسی رو هم داد
مثلا باید اینجور نوشت؟[آ-ی]

ممنون

eshpilen
پنج شنبه 01 فروردین 1392, 15:08 عصر
اینو الان تست کردم (تاحالا از توابع mb برای این کار استفاده نکرده بودم):


<?php

$str='سلام، من آمدم';

$patt='^[،-٩ ]*$';

mb_regex_encoding('UTF-8');

echo '<pre>';

var_dump(mb_ereg_match($patt, $str));

echo '</pre>';

?>

خب من اینجا کاراکترهای فارسی/عربی رو بصورت Range مشخص کردم (به اضافه کاراکتر فاصله البته).
در نرم افزار Character Map یک نگاهی بکنید ببنید کاراکترهای فارسی از کجا شروع میشه.
من از کامای فارسی رو شامل کردم تا آخر اعداد. اما در این بازه کاراکترهای دیگری هم هستن که شاید اصلا جزو فارسی نباشن یا تقریبا هیچوقت استفاده نمیشن یا اینکه شما نمیخواید توی رشته باشن؛ مثلا کاراکترهای همزه، تنوین، تشدید و غیره.
و جالب اینکه مثلا حروف گچ پژ اصلا در این محدوده نیستن و دوباره باید اونا رو هم جداگانه اضافه کنید!
یه خورده مسئله بهم ریخته و ظریف بنظر میاد. ضمنا باید درنظر داشت که مثلا بعضی چیزها در کیبورد فارسی و عربی ممکنه تفاوت داشته باشه اما در عین حال مثلا در ویندوزهای قدیمی (فکر کنم نسخه های پایین XP هم جزوش بودن) کیبوردهای فارسی به اشتباه حروف ک و ی عربی رو میزنن. پس باید تمام اینها رو درنظر بگیرید و یجوری هندل کنید.
حتی اعداد هم دو سری هست. فکر کنم اون سری که کیبوردهای فارسی میزنن سری دوم هست که در Range ای که من مشخص کردم نیستن.

خلاصه پیچ در پیچ است و نکته زیاد داره. اول مشخص کن دقیقا چی میخوای. بعد در Character Map به دقت نگاه و انتخاب کن کاراکترهایی رو که میخوای.