PDA

View Full Version : پردازش در ورودی داده های textarea



sweb
پنج شنبه 28 دی 1385, 02:34 صبح
با سلام می خواستم بدونم از چه طریقی میتونم وردی داه های textarea رو پردازش کنم. به عنوان مثال می خوام تعداد space ها رو که بیش از یکی هستش به یکی تغییر بدم.
و یا اینکه تعداد r\ یا n\ رو که بیش از یکبار در کنار هم آمده رو به عنوان یک بار ثبت کنم. اگه بخوام ساده تر بگم. می خوام از تکرار بیش از یک بار دو مقدار در کنار یکدیگر جلوگیری کنم.
البته فکر کنم توابع preg_replace و str_replace کاربرد دارند ولی من نمیتونم کدی بنویسم که تکرار بیشتر از 2 بار رو به یک بار تبدیل کنه. امیدوارم منظورمو متوجه شده باشید.

ArtCom
پنج شنبه 28 دی 1385, 08:46 صبح
سلام من فکر میکنم شما باید اول رشته موجود رو به آرایه تبدیل کنید بعد روی اون عملیات انجام بدین البته شاید راههای سریعتری هم وجود داشته باشه .
ولی پیشنهاد میکنم شما وقتی دارین ورودی رو از کاربر میگیرین کنترلهای لازم رو انجام بدین تا نیازی به پردازش نباشه یعنی وقتی کاربر دوتا enter یا espace پشت سر هم زد یکیشو پاک کنید.

armin390
پنج شنبه 28 دی 1385, 11:58 صبح
البته فکر کنم توابع preg_replace و str_replace کاربرد دارند ولی من نمیتونم کدی بنویسم که تکرار بیشتر از 2 بار رو به یک بار تبدیل کنه. امیدوارم منظورمو متوجه شده باشید.
برای این کار از عبارات باقاعده (Regular Expression) استفاده کن...
مثلاً تو pcre بعد از عبارت مورد جستجوت


{n,}

استفاده کنی یعنی تکرارهای بزرگتر مساوی n عبارت رو پیدا کن...
http://www.php.net/manual/en/
Regular Expression Functions (Perl-Compatible (http://www.php.net/manual/en/ref.pcre.php)) (http://www.php.net/manual/en/ref.pcre.php)
Regular Expression Functions (POSIX Extended) (http://www.php.net/manual/en/ref.regex.php)

sweb
پنج شنبه 28 دی 1385, 17:00 عصر
برای این کار از عبارات باقاعده (Regular Expression) استفاده کن...
مثلاً تو pcre بعد از عبارت مورد جستجوت


{n,}

استفاده کنی یعنی تکرارهای بزرگتر مساوی n عبارت رو پیدا کن...
http://www.php.net/manual/en/
Regular Expression Functions (Perl-Compatible (http://www.php.net/manual/en/ref.pcre.php)) (http://www.php.net/manual/en/ref.pcre.php)
Regular Expression Functions (POSIX Extended) (http://www.php.net/manual/en/ref.regex.php)
من متوجه نشدم من به عنوان آرایه pattern "/(\n,)/" استفاده کردم ولی نیجه نگرفتم اگه میشه یکم در مورد این پترنها توزیع بدین من تو سایت php.net هم خوندم ولی متوجه نشدم. :لبخند:

I,Nobody
پنج شنبه 28 دی 1385, 23:43 عصر
من نمیتونم کدی بنویسم که تکرار بیشتر از 2 بار رو به یک بار تبدیل کنه



$pos=strpos($str," ");
while($pos!==false){
$str=ereg_replace(" "," ",$str);
$pos=strpos($str," ");
}

با این کد کارهای مشابهی میتونی انجام بدی

armin390
جمعه 29 دی 1385, 13:41 عصر
من متوجه نشدم من به عنوان آرایه pattern "/(\n,)/" استفاده کردم ولی نیجه نگرفتم اگه میشه یکم در مورد این پترنها توزیع بدین من تو سایت php.net هم خوندم ولی متوجه نشدم.
(pcre)
۱- چیزی که من بهت گفتم این بود!! {} با () فرق داره ها...
۲- فاصله:


\s

۳- نتیجه:


'/\s{n,}/'

۴- تو همون لینکایی که گذاشتم به صورت کامل توضیحات لازم داده شده...





$pos=strpos($str," ");
while($pos!==false){
$str=ereg_replace(" "," ",$str);
$pos=strpos($str," ");
}

با این کد کارهای مشابهی میتونی انجام بدی

چه کاریه!! به جای ereg_replace اگه از str_replace استفاده می کردی باز قابل توجیه تر بود کارت...

amirhosein
یک شنبه 01 بهمن 1385, 08:28 صبح
پیشنهاد میکنم که با عبارتهای منظم کار کنین که کار رو بسیار راحت و حرفه ای میکنه و برای جاهای دیگه هم خیلی بدردتون میخوره

sweb
دوشنبه 02 بهمن 1385, 20:44 عصر
پیشنهاد میکنم که با عبارتهای منظم کار کنین که کار رو بسیار راحت و حرفه ای میکنه و برای جاهای دیگه هم خیلی بدردتون میخوره
میشه توضیح بدین و اگه لینکی چیزی دارید بهم بدین من منتظرم.
با تشکر.