PDA

View Full Version : سوال: فیلتر کردن برخی کارکترها در php



alasht
سه شنبه 30 فروردین 1390, 19:34 عصر
سلام دوستان
میخواستم ببینم چطور میتونم یکسری کارکترها رو تو یک رشته فیلتر کنم
به عنوان مثال من از طریق یک فرم رشته زیر رو ارسال میکنم
mytitle()@$#+-_

حالا میخوام تمام کارکترها جز متن پاک بشه و در خروجی این چاپ بشه
mytitle
ممنون میشم راهنمایی بفرمایید
با تشکر

Mahdi.Spirit
سه شنبه 30 فروردین 1390, 20:22 عصر
ميتونيد از دستور trim استفاده كنين
شكل كلي دستور

string trim ( string $str [, string $charlist ] )
اينجا هم ميتونيد نمونه ببينيد:
http://php.net/manual/en/function.trim.php

ghiravani
چهارشنبه 31 فروردین 1390, 01:17 صبح
با کمک این دستور:
مثلا همون رشته ای که گفتید ، اول وارد یک متغیر کنید.مثل:

$str="mytitle()@$#+-_";
حالا با کمک دستور زیر کاری که گفتید انجام میشه:

$str=str_replace("_","_",str_replace("_", "",$str ));
$str=str_replace("-","-",str_replace("-", "",$str ));
$str=str_replace("+","+",str_replace("+", "",$str ));
$str=str_replace("#","#",str_replace("#", "",$str ));
$str=str_replace("$","$",str_replace("$", "",$str ));
$str=str_replace(")",")",str_replace(")", "",$str ));
$str=str_replace("(","(",str_replace("(", "",$str ));



موفق باشید :)

sargardoon
چهارشنبه 31 فروردین 1390, 01:34 صبح
به روشی که به نظر من میرسه میتونید کاراکترهایی که نمیخواهید توی جمله باشه را داخل یک آرایه بذاری بعد توسط دستورات تکرار (LOOP) کاراکترها را پیدا کنی و آنها را حذف کنی و یا با حرف دیگری جایگزین کنی.

Mahdi.Spirit
چهارشنبه 31 فروردین 1390, 11:39 صبح
البته اون Trim كه گفتم فقط كاركترها رو از اول يا آخر رشته حذف ميكنه اگر داخل متن هم اون كاركترها وجود داره استفاده از عبارات منظم بهتره:

<?php
$string = "mytitle()@#+-_";
$new_string = ereg_replace("\(|\)|\@|\\$|#|\+|-|_", "", $string);
echo $new_string
?>
اين براي حذف كردن اون كاراكترها بود

براي اجازه دادن براي چاپ بعضي از كاراكترها (حروف كوچك ،‌بزرگ و اعداد) ميتونيد به جاي خط سوم اين خط رو بزاريد:

$new_string = ereg_replace("[^A-Za-z0-9]", "", $string);

ضمنا بهتره كار با عبارات منظم رو تا حدودي بلد باشيد

رضا قربانی
چهارشنبه 31 فروردین 1390, 16:13 عصر
به این صورت اطلاعات پست رو دریافت کن و داخل یک متغیر قرار بده
کلمات یا کاراکترهایی که می خوایی فیلتر کنی رو فقط کافیه به $symbol اضافه کنی
preg_replace هم که از وارد کردن اسکریپت و کدهای html جلوگیری می کنه
همین




$symbol = array(',', ')', '(', "'", '"','!', '?', '/', '[', ']', '+', '=', '#', '\x00', '\n', '\r', '\x1a', '&', '$');
$Famili = preg_replace("/<.*?>/", "",$_POST['Famili'] );
$Famili =str_replace( $symbol ,"",$Famili);