PDA

View Full Version : تابع preg_match



IMANAZADI
جمعه 19 شهریور 1395, 11:28 صبح
سلام


دوستان فرق preg_match و preg_match_all چیه ؟؟؟ و پارامتر سوم این توابع چه کاربردی داره ؟؟؟

مهرداد سیف زاده
شنبه 20 شهریور 1395, 00:46 صبح
تابع preg_match و preg_match_all از reqular expression زبان perl الهام گرفته.
هر دو تابع خروجی اون ها بصورت array هست. این آرایه از طریق آروگومان سوم و refrence برمیگرده. یعنی آرگومان سوم رو شما اسم یه متغیر رو میدید و جواب رو در اون متغیر دریافت میکنید
تابع preg_match بر اساس pathern که بهش میدید، چنان چه در رشته ای جستجو صورت بگیره با رسیدن به مقدار درست اون رو در هر ردیفش ذخیره میکه. جواب این تابع در صورت درست بودن بصورت یک array ردیف به ردیف هست. مثال زیر رو ببینید


preg_match("/find[ ]*(me)/", "find me find me", $matches):
$matches = Array(
[0] => find me
[1] => me
)

تابع preg_match_all عینا کار تابع preg_match رو انجام میده ولی تا آخر رشته ادامه میده و تمام موارد درست رو در یک array بصورت انجمنی برمیگردونه. این تابع بعد از رسیدن به مورد درست جستجو رو بر اساس موارد درست پیدا شده دوباره ادامه میده. مثلا row اول این تابع میشه چیزی شبیه همون تابع preg_match و row های بعدی جستجوی pathern در row های پیدا شده اولی هست. پس خروجی این تابع آرایه ای از موارد پیدا شده در رشته هست که هر چقدر به انتهای آرایه میرید موارد نزدیکتر به pathern بیشتر میشه.
مثال زیر رو با مثال اول مقایسه کنید


preg_match_all("/find[ ]*(me)/", "find me find me", $matches):
$matches = Array(
[0] => Array
(
[0] => find me
[1] => find me
)


[1] => Array
(
[0] => me
[1] => me
)
)