محدود کردن preg_replace

D.A.V.O.O.D

Member
سلام
میشه preg_replace رو محدود کرد ؟

برای توضیحات بیشتر : مثال زیر رو نگاه کنید :
PHP:
preg_replace( '/([)([a-zA-Z]+)(])/' , '' , $String );
این کدی که بالا دادم مشخصه دیگه توی $String هرچی به این صورت : [Text] باشه رو پاک می کنه .
حالا من می خوام که توی همین preg_replace کاری کنم که مثلا اگه توش [Davood] بود اونو پاک نکنه ! میشه !؟

البته می خوام که توی روشی که ارائه میشه فاکتور هایی مثل سرعت بیشتر ، فشار کمتر روی سرور و ... در نظر گرفته شده باشه ...

ممنونم از همه کسانی که کمک خواهند کرد :green:
 

k2-4u

Well-Known Member
داوود جان چطوری ؟

در رابطه با تابع preg_replace من رفتم manual رو نگاه کردم هیچ نوع تنظیمی نداشت
ولی با Regular Expression کار راحت و معمولی است


قاعدش هم اینه
(ابتدا باید در براکت باشد سپس لغت یا دستور مورد نظر سپس ^ و براکت بسته )
مثلا شما در کد زیر به این اشاره کردی که هرچی باشه غیر از Davood
PHP:
<?php
$str='Davood';//false
$str='korosh'; // true

echo preg_match('/[^(Davood).]*/i','',$str);

?>


در پست دوستمون مسعود هم . یک مثال دیگه زدم
 
آخرین ویرایش:

D.A.V.O.O.D

Member
ممنون کوروش
ببین اینی که گفتی رو می دونستم اما مشکل من اینه که این لغتی که می خوام غیر اون بقیه پاک بشه یه دونه نیست ، یعنی مثلا می خوام که غیر [Davood] ، [K2] همه پاک بشن ، اونوقت pattern ما چحوری میشه !؟
 

k2-4u

Well-Known Member
خب به جای کلمه Davood
یک دستور مناسب بنویس مثلا [0-9]
 

D.A.V.O.O.D

Member
ممنونم کوروش .

یعنی نمیشه pattern رو کاری کرد که غیر 2 تا بقیه پاک بشه ، نه !؟
 

k2-4u

Well-Known Member
خب چرا دیگه داوود جان مثال زیر رو ببین
PHP:
<?php
$str='pesarelor 234  pesarelor salam  345 pesarelor';

echo preg_replace('/[^(pesarelor).]*/i','',$str);

?>
هرچی هست پاک میشه ولی pesarlor پاک نمیشه
شما میتونی جای pesarlor از هر دستور regular Expression نی استفاده کنی
مثلا pesarlor و pesartork اگر بود حذف نشود

PHP:
[PHP]
echo preg_replace('/[^(pesarelor|pesartork).]*/i','',$str);
[/PHP]
 

جدیدترین ارسال ها

بالا