PDA

View Full Version : سوال: مشکل با ریگولار اکسپرشن



sohail0098
چهارشنبه 08 آبان 1392, 16:55 عصر
سلام به بروبکس
من متن زیر رو تو دیتا بیسم دارم ه از اون لود میکنم
Three/CD case/NN studies/NNS from/IN Australasian/NNP service/NN organisations/NNS explore/VB the/DT economic/JJ value/NN of/IN customers/NNS to/TO an/DT organisation/NN (/( EVCO/NNP )/) ./.
حالا از یه جدول دیگم
case رو میخونم حالا میخام تکرار این کلمه تو این متن مشخص بشه
وقتی با نرم افزار های ریگولار اکسپرشن تست می کنم عبازت زیر درست جواب میده

\scase/N\w+\s
ولی وفتی که تو برنامه این رشته رو از دیتابیس لود میکنم جواب نمیده

$h="/\s$KWD\x2FN\w+\s/';
preg_match_all($h, $String, $matches, PREG_SET_ORDER);
ایراد کار از کجاست
خواهشا کمک کنید تا این پروژه لعنتی تموم شه:گریه::چشمک:

saeidpsl
چهارشنبه 08 آبان 1392, 18:11 عصر
سوال میخوای بگه مثلا 2 بار تکرار شده یا مثلا جمله CD case یا case خالی رو نشون بده ؟

saeidpsl
چهارشنبه 08 آبان 1392, 18:13 عصر
اگه فقط تکرار نشون بده :چشمک:



preg_match_all('/(case)/', $string, $result, PREG_SET_ORDER);
echo count($result);

sohail0098
چهارشنبه 08 آبان 1392, 18:18 عصر
اگه فقط تکرار نشون بده :چشمک:



preg_match_all('/(case)/', $string, $result, PREG_SET_ORDER);
echo count($result);


فقط تکرارشو میخوام
ولی چون این عبارات رو از دیتابیس میخونم پس باید تو متغیر بریزم
از اونجایی که همش همین جوری کلمه بزرگ نیست مثلا UK هم داربم تو کلمات اینجوری توی وسط یک کلمه از متن هم UK باشه شمارش میشه
ولی از اونجایی که نقش جملات مشخص شده باید فقط اونایی رو بشماره که N/رو دارند

saeidpsl
چهارشنبه 08 آبان 1392, 18:25 عصر
این همه جمله رو چک می کنه کاری به N/ نداره
شما میخواهید بعد N/ نشون بده ؟
مثلا Uk case فقط case رو نشون بده اینجوری ؟

saeidpsl
چهارشنبه 08 آبان 1392, 18:29 عصر
, و شما میخواهید فقط داخل این تگ ها / / چک کنه ؟

sohail0098
چهارشنبه 08 آبان 1392, 18:41 عصر
, و شما میخواهید فقط داخل این تگ ها / / چک کنه ؟
من یه سری متن دارم که نقش کلمات توی اونا مشخص شده اینا توی یه جدول جداست
یه سری کلمه هم توی یه جدول دیگه دارم
حالا توی حلقه اینا رو از دیتا بیس میخونم و تکرارشون رو چک میکنم
حروف کوچیک و بزرگم فرق نداره
توی اون دستوری که شمابرای کیس نوشتی دو مورد زیر شمارش میشه
case cadcasehyh
ولی دراصل باید فقط کیس شمارش بشه
توی پیدا کردن این کلمه حتما یه اسپیس قبل کلمه هست
حالا یه کاراکتر نامعلوم برای جمع s توی کلمه میزاریم
بعد اون حتماN/میاد بعد اینم چند تا کاراکتر میاد
بعدش اسپیس

saeidpsl
چهارشنبه 08 آبان 1392, 18:41 عصر
اینو چک کن

preg_match_all('/\s(case)/', $string, $result, PREG_SET_ORDER);
echo count($result);

sohail0098
چهارشنبه 08 آبان 1392, 18:44 عصر
اگه مثل case \n این میخوای چک بشه

preg_match_all('/\s(case)/', $string, $result, PREG_SET_ORDER);
echo count($result);
اینی که شما نوشتی هر چی اولش کیس باشه میشماره

sohail0098
چهارشنبه 08 آبان 1392, 18:45 عصر
اگه مثل case \n این میخوای چک بشه

preg_match_all('/\s(case)/', $string, $result, PREG_SET_ORDER);
echo count($result);
اینی که شما نوشتی هر چی اولش کیس باشه میشماره

saeidpsl
چهارشنبه 08 آبان 1392, 18:50 عصر
اینجوری کار می کنه
/Uk case/case case/iran case/
اینجا هم که دوتاست /case case/ فقط کیس دوم شمارش میشه

saeidpsl
چهارشنبه 08 آبان 1392, 19:13 عصر
تموم شد بفرما :چشمک:


preg_match_all('/\bcase\b/i', $string, $result, PREG_SET_ORDER);
echo count($result);

sohail0098
چهارشنبه 08 آبان 1392, 21:36 عصر
تموم شد بفرما :چشمک:


preg_match_all('/\bcase\b/i', $string, $result, PREG_SET_ORDER);
echo count($result);
دستت درد نکنه ولی چون توی متنم N/ هم هست برای تموم مواردم کار نمی کنه
بازم موندم باید چکار کنم

saeidpsl
چهارشنبه 08 آبان 1392, 22:13 عصر
خواهش
متن رو بزار

sohail0098
چهارشنبه 08 آبان 1392, 23:28 عصر
خواهش
متن رو بزار

دستت درد نکنه داداشی از این استفده کردم درست شد بازم چک میکنم اگه مشکلی بود میگم
البته ایراد کار از خودم بود که بالا حروف کوچیک کرده بودم ولی توی ریگولار ان بزرگ گذاشتم

/\s$kwd.?.N\w+\s/