PDA

View Full Version : سوال: data casting in php



theinfinity
شنبه 09 خرداد 1388, 15:27 عصر
سلام می خوام یه متغییر رو به رشته تبدیل کنم باید چیکار کنم؟
متغیر از elements یه فایل xml گرفته شده از simplexml در php5 استفاده کردم.
محتوای element متنه ولی برای mysql_query() اون رو متن فرض نمی کنه!

امیـرحسین
شنبه 09 خرداد 1388, 15:54 عصر
فکر کنم اگر اینجوری امتحان کنید درست بشه:

$request = $uploaded->city[0];

theinfinity
شنبه 09 خرداد 1388, 16:20 عصر
نه درست نمیشه
ساختار xml دریافتی فقط یه city element داره ربطی نداره

امیـرحسین
شنبه 09 خرداد 1388, 16:40 عصر
مقدار متغیر رو در تابع var_dump قرار بدید تا ساختارش مشخص بشه.

echo "<pre>";
var_dump($request);
echo "</pre>";

theinfinity
شنبه 09 خرداد 1388, 17:28 عصر
| shiraz |
object(SimpleXMLElement)#2 (1) { [0]=> string(12) " shiraz " }
1
2
3
خروجی برنامه مقدار $request و نوع اون چاپ شده!
جالب اینه که توی فایل xml اسم شهر بدون 2تا کارکتر space در اطرافش هست
توی database این 2تا space رو گذاشتم ولی بازم کار نکرد
حتی نوع داده رو هم string کردم ولی بازم نمی شه

امیـرحسین
شنبه 09 خرداد 1388, 18:35 عصر
دوست عزیز کدهاتون رو اینجا قرار بدید، attach نکنید.

object(SimpleXMLElement)#2 (1) { [0]=> string(12) " shiraz " }
این یعنی مقدار متغیر از نوع property آبجکت هست. من هنوز معتقدم که

$uploaded->city[0]
باید جواب بده.

theinfinity
شنبه 09 خرداد 1388, 19:20 عصر
نه درست نمیشه

راستی string(12) یعنی چی؟
وقتی دستی اسم شهر رو می نویسم برگشتی var_dump() میشه string(8)
مقدار پیش فرض city[0] است با این حال من عوض کردم ولی بازم کار نکرد
به نظر میاد اینم یکی از php bugs باشه

theinfinity
شنبه 09 خرداد 1388, 19:40 عصر
فهمیدم!!! simplexml object طول رشه رو 12 کارکتر در نظر گرفته در صورتی اگه دستی بنویسم 8 کارکتر(که 8 درسته) میشه.
ولی چرا 12 کارکتر در نظر می گیره؟ چجوری درستش کنم؟ اگه بشه مثله c با رشته برخورد کرد کارکتر کارکتر میریزم تو یه متغیر دیگه

امیـرحسین
شنبه 09 خرداد 1388, 20:32 عصر
برای کاراکتر کاراکتر کردن می تونید به شیوه زیر استفاده کنید (البته برای رشته های غیرفارسی):

$newString = '';
for($i=0 ; $i<strlen($string) ; $i++)
$newString .= $string{$i};

theinfinity
شنبه 09 خرداد 1388, 23:42 عصر
اونی که گفتین نشد ولی یه راه حلی پیدا کردم
simplexml فرمت رشتش با رشته ای معمولی فرق میکرد(نمیدونم چه فرقی)
من داده ها رو با همین فرمت گذاشتم تو database و تونستم search کنم(از فایل xml خوندم گذاشتم تو database)