انتخاب یکی از دو عبارت مشابه در php

shz_furion

کاربر عضو
سلام.مثل اینکه یک مشکلی پیدا کردم تو برنامه هام.داشتم اطلاعات خاصی رو تو سایت فیفا دریافت می کردم که یک عبارت

maNlStandingsRowRelegation هست که دو بار تکرار شده.من نیاز دارم مثلا اسم یکیش رو maNlStandingsRowRelegation1 بزارم و اون یکی رو maNlStandingsRowRelegation2 بزارم.

دوستان کمک می کنند؟

 

william

کاربر عضو
یکم بهتر توضیح بدید. من که هیچ چیزی متوجه نشدم!

 

alifiresoft

کاربر عضو
اصلا توی php امکان نداره یک متغییر رو بتونید استفاده های مختلف ازش بکنید. میشه اما توی یک کد نمیشه. باید کدهاتون جدا جدا باشه.

 

shz_furion

کاربر عضو
ببینید.من همچین چیزی مشابه اون رو دیدم.100% این امکان وجود داره و شکی ندارم ولی نمیدونم چطور.

ببینید من اطلاعات صفحه رو دریافت می کنم.یک جدول داره با دو تگ tr با کلاس maNlStandingsRowRelegation.حالا میخوام استایل اولی رو یک جوری بدم و دومی یه جور دیگه.بخاطر همین لازم دارم با php یک تغییری رو ایجاد کنم که بشه بهشون استایل جداگونه داد.و برای همین نیاز دارم اسماشون رو عوض کنم.همچین چیزایی تو php وجود داره.تعجب می کنم میگید نمیشه.

 

william

کاربر عضو
توی حلقه میخواید این کار رو انجام بدید؟

اگه آره، اینطوری میشه:


کد:
$var = 'maNlStandingsRowRelegation';
$counter = 1;

while () {

    // LOOP STATEMENTS...    
    echo $var.$counter++."\r\n";

}
خروجی:


کد:
maNlStandingsRowRelegation1
maNlStandingsRowRelegation2
 

shz_furion

کاربر عضو
ممنون.ولی مثل اینکه نگرفتید چی شد.شما که یه دستور ساده حلقه while رو نوشتید.شما اصلا نخوندید ببینید چی میگم

اول با دستور file_get_contents اطلاعات رو میگیرم از صفحه.

حالا بعد یه سری عملیات هایی که انجام دادم،میخوام استایل به تگ هام بدم.که متاسفانه دوتا از تگ های tr کلا مثل همن و اسم کلاسشون یکیه.پس من برای استایل بندی شون به مشکل برمیخورم.چون استایل هاشون با هم فرق داره.گرفتید چی شد؟

 

IAMIR

کاربر عضو
شما عبارت فوق را توسط عبارات منظم و تابع preg_math_all دریافت کن . حتی این کار هم توسط html-dom هم میتونی انجام بدی .

این تابع تمامی عبارات مشابه را میریزه تو یک آرایه . حالا توسط حلقه foreach تک عبارت مشابه را توسط تابع preg_replace یک عدد به آخر کلاس اضافه کن .

برای این کار هم می تونی یک متغیر . داخل حلقه تعریف کنی که دونه دونه با هر دو حلقه یک عدد اضافه میشه . و این عدد در هر حلقه به آخر نام کلاس اضافه بشه .

 

shz_furion

کاربر عضو
داداش ممنونم.فقط یه مثال کوچیک میزنی بفهمم چی شد؟

 

Mohammad

مدیر انجمن
پرسنل مدیریت
راه حل بی ربط . بردار با CSS درست کن. maNlStandingsRowRelegation:last-child رو استایل بده...


کد:
.maNlStandingsRowRelegation:last-child{
background:#eee;
}
 

shz_furion

کاربر عضو
راه حل هوشمندانه ای هست.ممنونم آقا محمد.ولی متاسفانه به دلایلی استفاده از کلاس های کاذب رو نمیتونم انجام بدم.اون روشی که آقا امیر گفت مد نظرم هست.اگه میشه یه مثال بزنید از اون روش بزنید.

 

william

کاربر عضو
strpos موقعیت اولین رشته پیدا شده رو برمیگردونه. موقعیتش رو که داشته باشید، میتونید مثلا به آخرش عدد 1 اضافه کنید یا هر کار دیگه.

با preg_match هم میشه. اما با strpos سرعت بیشتر هست.

 

shz_furion

کاربر عضو
داداش این چیزی که گفتی نمیشه.اولش که گفتی شک کردم.ببین من دارم از یک پیجی اطلاعات رو میگیرم.با این حساب اگه یه کلمه به صفحه اضاف بشه که کلا اطلاعات میریزه بهم.

ولی شما گفتید با strpos میشه این کارو کرد.چطوری؟

در ضمن روش استفاده از کلاس های کاذب که آقا محمد گفتند خیلی کارآمد بود.ممنون.همه جا درسته ولی متاسفانه یک جا مشکل ساز شد و کل راه ها رو امتحان کردم،درست نشد.بخاطر همین نیاز به php دارم.یه نفر میتونه کدی بهم بده که مشکلم حل بشه؟

 
بالا