View Full Version : سوال: جایگزینی متنی در متنی حاوی کدهای html بدون در نظر گرفتن برخی تگهای html
xerror
سه شنبه 21 شهریور 1391, 15:58 عصر
سلام
چگونه میتوان متنی را در یک متن حاوی کدهای html جستجو کرد به صورتی که برخی تگ های html و محتوایش مثل تگ a یا img را در نظر نگیرد و از آنها گذر کند و در صورتی که با متن تعریف شده مطابقت داشت آن را جایگزین متن دیگری کند.
با تشکر
Hr.Ziggurat
سه شنبه 21 شهریور 1391, 16:03 عصر
سلام ، یه مثال از متن و رشته ای که قراره توش پیدا بشه بزن...
xerror
سه شنبه 21 شهریور 1391, 16:10 عصر
مثلا شما کد html همین صفحه رو در نظر بگیرید بعد "سلام" یا "سلام علیکم" رو توش پیدا کنه و "علی" جایگزین کنه.
ولی من میخواهم مثلا وقتی این "سلام" لینک شده بود یا به عنوان خصوصیت title یک تگ img تعریف شده بود کاری بهش نداشته باشه و جایگزین نشه.
Hr.Ziggurat
سه شنبه 21 شهریور 1391, 18:03 عصر
$t = "<html><head></head><body><img title='Salam' />Salam<a href='alakie'>Salam</a></body></html>";
$orgstring = "Salam";
$replacementstring = "Ali";
$o = explode($orgstring,$t);
$output = $o[0];
for($i=1;$i<count($o);$i++){
if(preg_match('/<img *([A-z]|\=)*title *= *(\'|\")$/i',$o[$i]) || preg_match('/<a *([A-z]|\=| |\'|\")*>$/i',$o[$i]))
$output.=$replacementstring.$o[$i];
else
$output.=$orgstring.$o[$i];
}
$output.=$o[count($o)-1];
echo $output;
متغییر t کد html اصلیه ، متغییر orgstring رشته ای که باید جایگزین بشه و replacementstring هم رشته ی که به جای رشته ی اولیه جایگزین میشه.
اگه مشکلی داشت بگو.
Hr.Ziggurat
سه شنبه 21 شهریور 1391, 18:04 عصر
با جاوا اسکریپت هم به همین راحتی میشه این کارو کرد.
xerror
شنبه 25 شهریور 1391, 11:04 صبح
سلام
ممنون برای راهنمایی تون اما چند تا مشکل داره! یکی این که بزرگ و کوچک بودن حروف تاثیری در جستجو نداشته باشد و نکته بعدی که مهم تر هم هست اینه که شاید ما چند رشته رو برای جایگزینی انتخاب کنیم.
برای مثال:
"جوان ایرانی" جایگزین "جوان خوب ایرانی" شود.
ممنون
Hr.Ziggurat
شنبه 25 شهریور 1391, 18:25 عصر
function AnalyseHTML($t,$orgstring,$replacementstring){
$o = spliti($orgstring,$t);
$output = $o[0];
for($i=1;$i<count($o);$i++){
if(!(preg_match('/<img *([A-z]|\=)*title *= *(\'|\")$/i',$o[$i-1]) || preg_match('/<a *([A-z]|\=| |\'|\")*>$/i',$o[$i-1])))
$output.=$replacementstring.$o[$i];
else
$output.=$orgstring.$o[$i];
}
return $output;
}
$html = "<html><head></head><body>Ziggurat<IMG title='Salam' />Salam<a href='alakie'>Salam</a></body></html>";
$a1 = AnalyseHTML($html,"SalAm","Hi Ali");
echo AnalyseHTML($a1,"Ziggurat","HR.Ziggurat");
xerror
یک شنبه 26 شهریور 1391, 09:09 صبح
این تابع spliti توی پی اچ پی ۵ Deprecated شده!
جایگزینی براش وجود نداره؟
Hr.Ziggurat
یک شنبه 26 شهریور 1391, 16:07 عصر
$o = preg_split('/'.$orgstring.'/i',$t);
تو گوگلم پیدا میشد...:اشتباه:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.