PDA

View Full Version : سوال: جدا کردن کاراکتر های خاص از کلمات



sohail0098
شنبه 04 آبان 1392, 11:43 صبح
سلام به برو بکس
من قراره یه سری متن رو بخونم و کلمات اونو جدا کنم و توی دیتابیس بریزم
مشکل اینجاست که توی متن یه سری کاراکتر های خاصی مثل (> ، . " ! و ......) هست که نمیخام اینا توی دیتا بیس ذخیره بشه
راه حل پیشنهادی شما چیه؟

AliRezaPro
شنبه 04 آبان 1392, 12:35 عصر
میتوانید از رجکس برای کارتون استفاده کنید . البته میتوانید از str_replace و strpos بصورت ترکیبی هم استفاده کنید. کارکترهایی که می خواهید فیلتر کنید را strpos بگیرید اگر وجود داشت با str_replace درست کنید

sohail0098
شنبه 04 آبان 1392, 12:51 عصر
دست گلت درد نکنه عیلرضا جان
یه سوال دیگه ،من اگه بخام یه سری کاراکتر خاص رو از آخر این کلمات حذف کنم از چه دستوری میتونم استفاده کنم
مثلا customer/NN
حالا میخام NN/ ازش حذف بشه و بعد تو دیتابیس ذخیره بشه
بازم ازت ممنونم

SlowCode
شنبه 04 آبان 1392, 13:29 عصر
از تابع str_ireplace استفاده کن.

$str = str_ireplace("/NN","",$str);

sohail0098
شنبه 04 آبان 1392, 13:46 عصر
دستت درد نکنه محسن جان
یه سوال من از چه ریگولار اکسپشنی باید استفاده کنم تا توسرچم Cuatomer/NN رو به صورت کامل بتونه برگردونه؟
خیلی ممنونم

sohail0098
شنبه 04 آبان 1392, 13:50 عصر
دستت درد نکنه محسن جان
یه سوال من از چه ریگولار اکسپشنی باید استفاده کنم تا توسرچم Cuatomer/NN رو به صورت کامل بتونه برگردونه؟
خیلی ممنونم
دستت درد نکنه
تونستم در بیارمش

\w+/NN\s

مهرداد سیف زاده
شنبه 04 آبان 1392, 14:11 عصر
شاید منظورتون از بداشتن "<! کدهای html یا اسکریپت باشه که برای برداشتنش از srip_tags استفاده کنید


$str = '<b>mystring</b>';
$new_str = strip_tags($str);
echo $new_str;

برای عوض کردن قسمتی از متن همین تابعی که دوستمون گفتن استفاده کنید


$str = 'Cuatomer/NN';
$new_str = str_replace('/NN','',$str);
echo $new_str;

دیگه خیلی کار حرفه ای باشه مثلا پیدا کردن تاریخ در یک متن و برداشتن فرمت دلخواه از اون متن از regexp استفاده میشه
برای برداشتن بر حسب regexp از تابع preg_replace (http://php.net/manual/en/function.preg-replace.php) استفاده میشه


$str = 'the Cuatomer in text Cuatomer/NN and Mehrdad/NN';

$pattern = '#(/NN)#';

$replace = '';

$new_str = preg_replace($pattern, $replace, $str);

echo $new_str;

sohail0098
شنبه 04 آبان 1392, 19:22 عصر
سلام
اگه میشه به من حالتی از تابع prg_match رو معرفی کنید که تمام تطابق ها با ریگولار اکسپرشن زیر رو پیدا منه و توی آرایه بریزه

"\w+/NN\s"
در ضمن چرا توی اجرای برنامه ارور میده که از بک اسلش نمیشه توی
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in......
در کل من یه متنی مثل زیر دارم و میخام تموم کلمه هایی که به NN/ ختم میشه جدا بشند

Customer/NN relationships/NNS represent/VBP a/DT firm's/NNS most/RBS valuable/JJ assets.Within/NN value-based/JJ management/NN it/PRP is/VBZ therefore/RB crucial/JJ that/DT customer/NN relationships/NNS should/MD be/VB treated/VBN as/IN assets/NNS or/CC investments/NNS that/DT need/NN to/TO be/VB actively/RB managed/VBN to/TO maximize/VB corporate/JJ value/NN ./.

مهرداد سیف زاده
شنبه 04 آبان 1392, 20:21 عصر
بله نسبت به / حساس هست بصورت زیر بکار ببرید

$pattern = '{/NN}';

البته بهتره اطلاعات خودتون رو درباره افعال بی قاعده کمی بیشتر کنید. معمولا دوستانی که در دانشگاه کارشناسی نرم افزار خوندن درس زبانها و ماشینها پاش کردن و با این افعال براحتی ارتباط برقرار میکنند

خروجی برنامه بصورت زیر هست
http://s3.picofile.com/file/7983464080/regexp.png

sohail0098
شنبه 04 آبان 1392, 20:52 عصر
بله نسبت به / حساس هست بصورت زیر بکار ببرید

$pattern = '{/NN}';

البته بهتره اطلاعات خودتون رو درباره افعال بی قاعده کمی بیشتر کنید. معمولا دوستانی که در دانشگاه کارشناسی نرم افزار خوندن درس زبانها و ماشینها پاش کردن و با این افعال براحتی ارتباط برقرار میکنند

خروجی برنامه بصورت زیر هست
http://s3.picofile.com/file/7983464080/regexp.png
نه،خروجیش اشتباه فقط اونایی رو میخام که تهشون NN/ است که تو خروجی شما NNS/ رو هم آورده یا VBP/
اگه ریگولار اکسپرشن چیزی غیر از اینی که نوشتم باشه جوابش غلط میشه
دمت گرم ولی راهنمایی خوبی کردی افتاد که ایراد کارم از کجا بود
مرسی