PDA

View Full Version : پیدا کردن یک کلمه در متن



Salazar.mi
جمعه 13 دی 1398, 12:54 عصر
سلام
من حدود 600 تا متن دارم به صورت string های جدا به اسم های b1 تا b600
یه آرایه دارم به اسم n که توش 120 تا خونه هست از یک تا 120
میخوام بیام از این دستور استفاده کنم بیاد هر بار تو هر کدوم از b ها دنبال 120 تا کلمه بگرده به ازای هر کلمه اگر کلمه مورد نظر بود یک چاپ کنه اگر نبود 0
ولی ارور میده اجرا نمیشه
نمیفهم مشکلش چیه


for($i=1;$i<=600;$i++)
{
for($j=1;$j<=20;$j++)
{
if (strpos(${"b".$i}, ${"n"[$j]}) !== false)
{
echo 1;
}
else
{
echo 0;
}
}
}

اگر بشه اینا باید تو یه حالت جدول مانند باشه
مثلا 120 تا ستون 600 تا سطر که هر سطر مربوط به یه متن و 120 تا خانه اش همون مدلی که بالا گفتم پر میشه
کار با جدول تو php سخته میشه کاری کرد بعد از اینکه کار یه سطر تموم شد بره خط بعدی و ادامه را تو خط بعدب انجام بده؟
ممنون میشم کمکم کنین
تشکر

ASHKANLAEI
جمعه 13 دی 1398, 12:58 عصر
درست متوجه منظورتون نشدم میشه با جدول مثال نشون بدین چه کاری میخواین دقیقا انجام بدین؟

Salazar.mi
جمعه 13 دی 1398, 13:01 عصر
صادقانه بگم تا نوشتم رفتم دوباره دنبال کد فهمیدم باید کجاشو تغییر بدم
درست شد


for($i=1;$i<=600;$i++)
{
for($j=1;$j<=20;$j++)
{
if (strpos(${"b".$i}, ${"n"}[$j]) !== false)
{
echo 1;
}
else
{
echo 0;
}
}
echo '<br>';
}


فقط الان مشکل اینه که تو این سایت نوشته این دستور خیلی کارایی نداره

http://noviniran.com/fa/بلاگ/برنامه-نویسی-وب/php/Post/31/سریع-ترین-روش-در-PHP-برای-پیدا-کردن-کلمه-یا-کلمات-در-متن-و-اعمال-تغییرات-دلخواه-روی-آن-(regex)

ولی این دستور preg_replace تا جایی که میدونم 0 و یک را نمیشه باهاش برگردوند درسته؟
الان یه جدول میکشم چشم

Salazar.mi
جمعه 13 دی 1398, 13:10 عصر
مثلا اگر به جای 120 کلمه 4 تا کلمه تو آرایه n باشه(آرایه n امون 4 تا خونه داشته باشه)و به جای 600 متن 10 تا رشته متنی از b1 تاb10 داشته باشم



وجود یا عدم وجود خانه اول در آرایه n در متن b1
وجود یا عدم وجود خانه دوم آرایه n در متن b1
وجود یا عدم وجود خانه سوم آرایه n در متن b1
وجود یا عدم وجود خانه چهارم آرایه در متن b1


وجود یا عدم وجود خانه اول در آرایه n در متن b2
وجود یا عدم وجود خانه دوم آرایه n در متن b2
وجود یا عدم وجود خانه سوم آرایه n در متن b2
وجود یا عدم وجود خانه چهارم آرایه در متن b2


وجود یا عدم وجود خانه اول در آرایه n در متن b3
وجود یا عدم وجود خانه دوم آرایه n در متن b3
وجود یا عدم وجود خانه سوم آرایه n در متن b3
وجود یا عدم وجود خانه چهارم آرایه در متن b3


وجود یا عدم وجود خانه اول در آرایه n در متن b4
وجود یا عدم وجود خانه دوم آرایه n در متن b4
وجود یا عدم وجود خانه سوم آرایه n در متن b4
وجود یا عدم وجود خانه چهارم آرایه در متن b4


وجود یا عدم وجود خانه اول در آرایه n در متن b5
وجود یا عدم وجود خانه دوم آرایه n در متن b5
وجود یا عدم وجود خانه سوم آرایه n در متن b5
وجود یا عدم وجود خانه چهارم آرایه در متن b5


وجود یا عدم وجود خانه اول در آرایه n در متن b6
وجود یا عدم وجود خانه دوم آرایه n در متن b6
وجود یا عدم وجود خانه سوم آرایه n در متن b6
وجود یا عدم وجود خانه چهارم آرایه در متن b6


وجود یا عدم وجود خانه اول در آرایه n در متن b7
وجود یا عدم وجود خانه دوم آرایه n در متن b7
وجود یا عدم وجود خانه سوم آرایه n در متن b7
وجود یا عدم وجود خانه چهارم آرایه در متن b7


وجود یا عدم وجود خانه اول در آرایه n در متن b8
وجود یا عدم وجود خانه دوم آرایه n در متن b8
وجود یا عدم وجود خانه سوم آرایه n در متن b8
وجود یا عدم وجود خانه چهارم آرایه در متن b8


وجود یا عدم وجود خانه اول در آرایه n در متن b9
وجود یا عدم وجود خانه دوم آرایه n در متن b9
وجود یا عدم وجود خانه سوم آرایه n در متن b9
وجود یا عدم وجود خانه چهارم آرایه در متن b9


وجود یا عدم وجود خانه اول در آرایه n در متن b10
وجود یا عدم وجود خانه دوم آرایه n در متن b10
وجود یا عدم وجود خانه سوم آرایه n در متن b10
وجود یا عدم وجود خانه چهارم آرایه در متن b10

Salazar.mi
جمعه 13 دی 1398, 13:13 عصر
چیزی که با دستور strpos پیدا کردم خیلی 0 داره
ممیترسم تو متن بوده باشه ولی پیداش نکرده باشه
میشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

ASHKANLAEI
جمعه 13 دی 1398, 13:15 عصر
اون لینک که ربطی نداره اما به نظر من میتونید در کدتون به جای شرطی که گذاشتید از شرط اینلاین استفاده کنید:

for($i=1;$i<=600;$i++)
{
for($j=1;$j<=20;$j++)
{
echo (strpos(${"b".$i}, ${"n"}[$j]) !== false ? 1 : 0);
}
echo '';
}

ASHKANLAEI
جمعه 13 دی 1398, 13:16 عصر
چیزی که با دستور strpos پیدا کردم خیلی 0 داره
ممیترسم تو متن بوده باشه ولی پیداش نکرده باشه
میشه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
فکر نمی کنم این طور باشه

Salazar.mi
جمعه 13 دی 1398, 13:21 عصر
بی نهایت ممنونم جواب دادین
واقعا ممنون
فقط یه سوال دیگه
ببخشید شرمنده
الان اگر بخواهم تو ستون 121 یعنی یه ستون اضافه کنم
که برای 600 سطر این ستونه
100 تای اولش 1 باش
صدتای دومش 2 باشه
...
صدتای ششم عدد 6 باشه
باید کجای کد بنویسم
ممنون میشم کمکم کنین
تشکر

Salazar.mi
جمعه 13 دی 1398, 13:22 عصر
کاملا درسته فقط برای اینکه حالت جدولی داشته باشه آخرش به جای " " باید <br> باشه
بازم ممنون
تشکر

ASHKANLAEI
جمعه 13 دی 1398, 13:24 عصر
بی نهایت ممنونم جواب دادین
واقعا ممنون
فقط یه سوال دیگه
ببخشید شرمنده
الان اگر بخواهم تو ستون 121 یعنی یه ستون اضافه کنم
که برای 600 سطر این ستونه
100 تای اولش 1 باش
صدتای دومش 2 باشه
...
صدتای ششم عدد 6 باشه
باید کجای کد بنویسم
ممنون میشم کمکم کنین
تشکر
یعنی میخواین برای n121 جای b1 تا b600 از اعداد دیگه استفاده کنید؟

Salazar.mi
جمعه 13 دی 1398, 13:27 عصر
دقیقا
این ستون 121 به متن ها یا کلمه ها هیچ ربطی نداره
ولی باید کنار این 120 تا قرارا بگیره

ASHKANLAEI
جمعه 13 دی 1398, 13:37 عصر
این میشه؟

for($i=1;$i<=600;$i++)
{
for($j=1;$j<=121;$j++)
{
if ($j == 121) {
$r = ($i - ($i % 100)) / 100 + 1;
echo (strpos($r, ${"n"}[$j]) !== false ? 1 : 0);
} else {
echo (strpos(${"b".$i}, ${"n"}[$j]) !== false ? 1 : 0);
}
}
echo '';
}

Salazar.mi
جمعه 13 دی 1398, 14:02 عصر
راستش این جواب است
ولی اصلا عدد 6 و 5 و اینا توش نیست
151211

ASHKANLAEI
جمعه 13 دی 1398, 14:06 عصر
چرا 6 و 5؟
مگه نمیخواین در صورت وجود 1 و عدم وجود 0 بیاره؟

Salazar.mi
جمعه 13 دی 1398, 14:09 عصر
نه دیگه باید تو ستون 121 ام بیاد
به ازای 100 تای اول عدد یک باشه
به ازای 100 تای دوم عدد دو باشه
به ازای صدتای سوم عدد 3 باشه
.
.
.
به ازای صدتای ششم عدد شش باشه
تو جوابش هر سطرش 120 تا است ستون 121 ام نیست اصلا
ببخشید شرمندم بخدا خیلی سوال میپرسم
ببخشید

ASHKANLAEI
جمعه 13 دی 1398, 14:17 عصر
این کار میکنه؟

for($i=1;$i<=600;$i++)
{
for($j=1;$j<=121;$j++)
{
if ($j == 121) {
echo ($i - ($i % 100)) / 100 + 1;
} else {
echo (strpos(${"b".$i}, ${"n"}[$j]) !== false ? 1 : 0);
}
}
echo '';
}

Salazar.mi
جمعه 13 دی 1398, 14:45 عصر
راستش یه ذره جابه جایی داره
خونه آخر به جای 6 نوشته 7
بعد مثلا 99 تای اول شده یک نه صدتای اول
:ناراحت:

ASHKANLAEI
جمعه 13 دی 1398, 14:49 عصر
این کار میکنه؟

for($i=1;$i<=600;$i++)
{
for($j=1;$j<=121;$j++)
{
if ($j == 121) {
echo ceil($i/100);
} else {
echo (strpos(${"b".$i}, ${"n"}[$j]) !== false ? 1 : 0);
}
}
echo '';
}

Salazar.mi
جمعه 13 دی 1398, 14:51 عصر
بی نهایتتتت ممنونممممممممممممممم
تشکرات ویژههه
در ظاهر درسته
ولی راستش من تعداد سطر و ستون ها را با اکسل چک میکردم
که دیگه الان هنگ کرده نمیشه
ولی در ظاهر درسته
بی نهایت ممنونمممممممممممم
خدا خیرتون بده

Salazar.mi
جمعه 13 دی 1398, 17:04 عصر
با اکسل هم نگاه کردم
کاملا درسته بی نهایت ممنونم
واقعا ممنون
تشکر

ASHKANLAEI
جمعه 13 دی 1398, 17:13 عصر
خواهش میکنم