کی کار با عبارات با قاعده اش خوبه ؟ بیاد تو

D.A.V.O.O.D

Member
سلام
کد زیر را نگاه کنید .
PHP:
preg_match_all( '!<b>(.*)</b>!si', $String , $Finds );
می تونید در مورد فلگ های s و i , ! یه توضیح مخصر بدید ؟
جای اینها چه فلگ های دیگه ای می تونند قرار بگیرند و کارشون چیه ؟

ممنونم ازتون
 

ziXet

مدیر انجمن PHP/MYSQL
سلام
کد زیر را نگاه کنید .
PHP:
preg_match_all( '!<b>(.*)</b>!si', $String , $Finds );
می تونید در مورد فلگ های s و i , ! یه توضیح مخصر بدید ؟
جای اینها چه فلگ های دیگه ای می تونند قرار بگیرند و کارشون چیه ؟

ممنونم ازتون
به اینا میگن modifier اینو ببین:
http://www.addedbytes.com/cheat-sheets/download/regular-expressions-cheat-sheet-v2.png
تعداد زیادی modifier هست که کاربرد هر کدوم رو جلوش نوشته
 

D.A.V.O.O.D

Member
ممنون ازت
میگم یه سوال ! ببین اصلا ربطی به این modifier ها داره یا نه ؟
اینو ببین :
PHP:
preg_replace( "!<b>(.*?)</b)>!si" , '', $String );
کارشم که مشخصه دیگه !؟ هرچی که داخل تگ <b> باشه را حذف می کنه .
مشکل من اینه که وقتی این این replace را انجام می ده جاش یه جای خال می اندازه ، مثال های زیر را نگاه کن :

مثلا اگه String ما این باشه :
HTML:
<span>Davood</span>
<b>Salam</b>
<span>Davood</span>
بعد از اینکه replace انجام میشه ، خروجی این شکلی می شه :
HTML:
<span>Davood</span>

<span>Davood</span>

متوجه منظورم شدی ؟ اگه آره مشکل از کجاست ؟ ممنون
 

LordEfazati

Member
منطورت اینه چرا اینجوری پرینت میشه ؟
PHP:
Davood Davood
این space وسطش چرا هست؟
خب برای اینکه space نداشته باشه باید همچین کدی داشته باشه خب
کد:
<span>DavoodDavood</span>
 

D.A.V.O.O.D

Member
سلام
نه دوست عزیز ! شما داری خروجی را نگاه می کنی !
اون کد هایی که من دادم را تست کن و view->Source خروجی را ببین تا متوجه منظورم بشی
 

parsiteam

Member
ممنون ازت
میگم یه سوال ! ببین اصلا ربطی به این modifier ها داره یا نه ؟
اینو ببین :
PHP:
preg_replace( "!<b>(.*?)</b)>!si" , '', $String );
کارشم که مشخصه دیگه !؟ هرچی که داخل تگ <b> باشه را حذف می کنه .
مشکل من اینه که وقتی این این replace را انجام می ده جاش یه جای خال می اندازه ، مثال های زیر را نگاه کن :

مثلا اگه String ما این باشه :
HTML:
<span>Davood</span>
<b>Salam</b>
<span>Davood</span>
بعد از اینکه replace انجام میشه ، خروجی این شکلی می شه :
HTML:
<span>Davood</span>

<span>Davood</span>

متوجه منظورم شدی ؟ اگه آره مشکل از کجاست ؟ ممنون
خب یک اینتر رو هم حذف کن :


PHP:
preg_replace( "!\n<b>(.*?)</b)>!si" , '', $String );

یا اگر نشد این :

PHP:
preg_replace( "!<b>(.*?)</b)>\n!si" , '', $String );
 

D.A.V.O.O.D

Member
ممنونم ساسان جان اما این روش قاعدتا نا معقول به نظر می رسه ، چون من این سوال رو که پرسیدم برای کلاسی هست که برای تمپلیت نوشتم ، این مشکل توش هست . این که شما می گی انجام بدم اگه تو قالب قبلش اینتر نزده باشه ، پاک نمی کنه تگ را ! می خوام ببینم روشی نیست که در صورت وجود این اینتر را پاک کنه ؟
فکر کنم با همین identifier ها باید بشه
 

parsiteam

Member
خواهش میشه :d

حالا اگر توی سورس یک خط فاصله باشه چی میشه ؟ درضمن تمپلت اینجین خیلی زیاده توی نت .
 
باید به این شکل در بیاد نهایتا:
PHP:
preg_replace( "!(\n)?<b>(.*?)</b>(\n)?!si" , '', $String );

ولی اینم یه بدی داره:Dاحتمالا اگه فاصله نباشه حرف قبل از <b> رو هم حذف میکنه.احتمالا !
حالا تست کن شاید جواب داد :wink:
 

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

بالا