PDA

View Full Version : درج متغییر در بین xml و در نهایت تبدیل آن به رشته



benyamin_pc
شنبه 06 خرداد 1391, 08:47 صبح
سلام دوستان
اینو هر طور باهاش ور میرم یکی از این 2 مورد که میخام نمیشه
یه متغییر xml تو php تعریف بشه که تگهارو بهش بدم و در لابه لاش بشه متغییر گذاشت
اینو میشه به شکل زیر راحت ایجادش کرد اما وقتی اکو میکنم تگهاشو نمایش نمیده و میخام کنم به رشته تا تگهاشم نمایش بده اما نمیشه


$name="ali";
$a."<xml>";
$a.="<naame>";
$a.$name;
$a.="</name>";
$a.="</xml>";

همونطور که گفتم اینو که اکو میکنم فقط ali چاپ میشه اما میخام علی در بین تگهائی که بالا نوشتم دیده شه

MMSHFE
شنبه 06 خرداد 1391, 12:29 عصر
قبلش این هدر رو بگذارین:

header('Content-Type: application/xml');
موفق باشید.

benyamin_pc
شنبه 06 خرداد 1391, 14:27 عصر
thanks a lot
اما حالام کد زیر که میزنم مشکلی نیست


$t="hi !";
$g.="<a>";
$g.="<b>";
$g.="<c n='".$t."'>";
$g.="</c>";
$g.="</b>";
$g.="</a>";
echo $g;

ولی کد زیر مشکل داره و xml نصفه چاپ میکنه


$op."<xml><a>";
$con = mysql_connect("localhost","a","a");
mysql_select_db("mysql", $con);
$result = mysql_query("SELECT * FROM a",$con);
while($row = mysql_fetch_array($result)){$op."<b n='".$row['a1']."'>"."</b>"."<b n='".$row['a2']."'>";}
$op.="</a></xml>";
echo $op;

MMSHFE
شنبه 06 خرداد 1391, 19:12 عصر
header('Content-Type: application/xml');
@mysql_connect('localhost', 'root', '') or die();
@mysql_select_db('mysql') or die();
$op = '<xml>'.PHP_EOL;
$op .= '<a>'.PHP_EOL;
$result = mysql_query('SELECT * FROM `a`');
while($row = mysql_fetch_assoc($result)) {
$op .= '<b n="'.$row['a1'].'"></b>'.PHP_EOL;
$op .= '<b n="'.$row['a2'].'"></b>'.PHP_EOL;
}
mysql_free_result($result);
$op .= '</a>'.PHP_EOL;
$op .= '</xml>'.PHP_EOL;
echo $op;

موفق باشید.

benyamin_pc
شنبه 06 خرداد 1391, 22:17 عصر
ممنون اما اشکالمو فهمیدم چی بود که کد دومی کار نمیکرد تو کد دومی مساوی هامو(=) جا انداخته بودم !!

benyamin_pc
شنبه 06 خرداد 1391, 22:39 عصر
حالا بزرگترین مشکلی که هست اینه که کافیه یه چیزی قبل اکو این اکو کنم اونوقت باز بهم ریخته میاد چون میخاد تو قالب xml چاپش کنه , نمیشه به شکل رشته اینو چاپ کرد و کاری نداشته باشه چیه مثل یه رشته مثل این کامنت های سایت که همه چی میشه توش نوشت حالا میتونه همین xml باشه اما قبلش بنویسیم "سلام"

benyamin_pc
شنبه 06 خرداد 1391, 22:52 عصر
این هدر header('Content-Type: application/xml'); همه چیو بهم ریخت که , کلا صفحرو به فرمت xml تبدیل میکنه , دیگه تگ html هم اکو میکنم نمایش نمیده , یعنی نمیشه مثل کامنت های همین سایت که قبل کامنت تگ ها دیده میشن تو خود کامنت میشه کد xml نوشت و قبل کد هم هرچی نوشت , فقط یه xml با تگهاشو محتواش به شکل رشته اکو کنم؟

MMSHFE
دوشنبه 08 خرداد 1391, 14:35 عصر
خوب دوست عزیز این کار اصلاً استاندارد نیست. شما توی XML تگ HTML که نمیتونین بگذارین! مثل اینه که توی پیتزا بخواین کباب کوبیده بگذارین!!! اما درهرحال اگه اصرار دارین، میتونید اون بخشهایی که میخواین رو با htmlentities تبدیل به کد بی اثر کنید و به نمایش در بیارین. منتها بعنوان یک عبارت معمولی نه بعنوان یک تگ باهاش برخورد میشه.

benyamin_pc
دوشنبه 08 خرداد 1391, 16:08 عصر
مثالتون خیلی باحال بود اما این کار یه جور دور زدن یه مسائلی بود , فقط احتیاج دارم به اینکه یه سری متغییر بذارم لای یه فرمت xml بعد این متغییر xml به رشته تبدیلش کنم , که خوب بخش اولش به راحتی قابل انجامه , یعنی متغیر لای یه قالب xml گذاشتن , اما اینو که نمیشه اونو به یک رشته تبدیل کرد به نظرم اگه این کارو نشه با php انجام داد یه ضعف php هست چون این کار یه کار عادی تو هر زبانیه که شما بگین

benyamin_pc
دوشنبه 08 خرداد 1391, 16:12 عصر
تو هر زبونی یه تکس باکس اقلا هست , که توش میشه هر چیزی نمایش داد , (که تو php در واقه میشه خود صفحه وب) , چه یه xml واقعی که لابلاش متغیر گذاشتیم و به راحتی به رشته میشه تبدیلش کرد چه هر چیز دیگه ای , اصلا پارس xml رابطه مستقیمی با رشته داره

benyamin_pc
دوشنبه 08 خرداد 1391, 16:20 عصر
البته اونی که شما میگین کاملا منطقیه اما من اصلا نمیخام تو قالب xml رشته بریزم , اون هدر کلا نباید گذاشته شه , قالب به فرم معمولی html بمونه , اما اون متغیر xml یه جوری بشه به استرینگ تبدیلش کرد و با یه استرینگ دیگه باهم چاپش کرد , اصلا خیلی عادیه این کار تو همه زبونا تو php هم اگه نمیشد که توابع json نمیتونستن نوشته شن پس حتما شدنیه این کار

MMSHFE
دوشنبه 08 خرداد 1391, 17:06 عصر
راستشو بخواین گیج شدم! میشه با مثال منظورتون رو دقیقاً بیان کنید؟ تعریف متغیر و... رو با مثال طوری که دقیقاً میخواین انجام بشه و همچنین کدی که نوشتین رو مطرح کنید تا ببینیم مشکل از کجاست.

benyamin_pc
دوشنبه 08 خرداد 1391, 22:27 عصر
بله خواهش می کنم , همین مثال نگا کنین


$op .= "<a>";
$con = mysql_connect("localhost", "a", "a");
mysql_select_db("mysql", $con);
$result = mysql_query("SELECT * FROM a", $con);
mysql_data_seek($result,0);
while($row = mysql_fetch_array($result))
{
$op .="<b n='" . $row['a1'] .'&'. "'></b>";
$op .="<b n='" . $row['a2'] .'|'. "'></b>";
}
$op .= "</a>";




این متغیر op الان تو هر زبونی میشه مثل رشتش کرد و این رشترو میشه اصلا نصفشو یا 20 کاراکتر اولشو چاپ کرد و وقتی به رشته تبدیل شده کاری نداره قبلا یه متغییر xml بوده و راحت هر تغییری خاستیم رو رشته میدیم و چاپش میکنیم اما نه تو فرمت xml تو تکست باکسی که فقط فرمت xml میپذیره بلکه تو تکست باکس معمولی
---
الان با یه زبون دیگه این کارو کردم , این op وقتی به رشته تبدیل کنیم (خود op نه محتویات تگهاشو) رشته زیرو بهمون میده که میشه اصلا نصفشو تو تکست باکس چاپ کرد



<a><b n='1&'></b><b n='4|'></b><b n='6&'></b><b n='22|'></b><b n='4&'></b><b n='4|'></b><b n='3&'></b><b n='5|'></b><b n='1&'></b><b n='2|'></b><b n='3&'></b><b n='2|'></b><b n='11&'></b><b n='111|'></b><b n='5&'></b><b n='6|'></b><b n='7&'></b><b n='6|'></b><b n='3&'></b><b n='8|'></b><b n='55&'></b><b n='79|'></b><b n='43&'></b><b n='675|'></b><b n='22&'></b><b n='45|'></b><b n='4&'></b><b n='4|'></b><b n='8&'></b><b n='4|'></b><b n='4&'></b><b n='6|'></b><b n='3&'></b><b n='5|'></b><b n='8&'></b><b n='5|'></b><b n='4&'></b><b n='2|'></b><b n='2&'></b><b n='0|'></b><b n='5&'></b><b n='3|'></b><b n='5&'></b><b n='7|'></b><b n='&'></b><b n='|'></b></a>

MMSHFE
سه شنبه 09 خرداد 1391, 08:16 صبح
دوست عزیز، اینو امتحان کنید:


echo htmlentities($op);
echo htmlentities(mb_substr($op, 0, 10, 'utf-8'));

باید دقت کنید که موقع نمایش، اگه میخواین تگها کار نکنن و صرفاً به نمایش در بیان (بصورت ظاهری) باید اونها رو خنثی کرده و به متن عادی تبدیل کنید تا برای HTML معنای خاصی نداشته باشن.
موفق باشید.

benyamin_pc
سه شنبه 09 خرداد 1391, 10:56 صبح
دقیقا خودش بود