كيف اصل لهذا العنصر في json

السلام عليكم

احتاج مساعدة في الحصول على معلومات من ملف json ب php

لدي هذا الرابط api لويكبيديا يقوم بعرض تعريف للكلمات

https://ar.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=%D9%85%D9%82%D8%B1%D8%A7%D8%A8%20%D8%AC%D9%8A%D9%85%D8%B3%20%D9%88%D9%8A%D8%A8%20%D8%A7%D9%84%D9%81%D8%B6%D8%A7%D8%A6%D9%8A

اريد الحصول على الفقرة الأولى فقط <p> من داتا extract

$json = file_get_contents('https://ar.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=%D9%85%D9%82%D8%B1%D8%A7%D8%A8%20%D8%AC%D9%8A%D9%85%D8%B3%20%D9%88%D9%8A%D8%A8%20%D8%A7%D9%84%D9%81%D8%B6%D8%A7%D8%A6%D9%8A');
$obj = json_decode($json);
$first_p = 
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

أرجو تجريب:

  • نجلب الحقل extract
  • نستخدم الدالة string tags لاقتطاع نص الوسم p
$text = $obj['query']['pages']['590321']['extract'];
$first_p = strip_tags($text,'<p>');

ألا يمكن تجاوز 590321 لاني اريد استخدام متغير في titles

جرب تطبيق strip_tags مباشرة

Fatal error: Uncaught Error: Cannot use object of type stdClass as array in .../index.php:401 Stack trace: #0 {main} thrown in ...index.php on line 3

ما للسطر المسبب للمشكلة

هذا السطر

$text = $obj['query']['pages']['590321']['extract'];

جرب

$text = $obj->query->pages->590321->extract;

أو

$text = $obj->query->pages->{'590321'}->extract;

الثاني هو الشغال لكنه يعرض جميع الفقرات وانا اريد الفقرة الأولى فقط

يمكنك تخزين الناتج في متغير ثم جلب الدليل الأول

$res = strip_tags..
echo $res[0]

لا يعطي أي نتيجة يظهر رمز � فقط

كيف ظهرت النتيجة السابقة؟

عند استخدام

$res = strip_tags($text,'<p>');

تظهر النتيجة

أما $res[1]; فيظهر رمز غريب �

قمت بتجريب التالي:

$closetag = strpos($text,"</p>");
echo  substr($text,0,$closetag);

closetag تجلب index بداية وسم الإغلاق، نمرره ل substr لاقتطاع أول جزء من السلسلة

Mohamed__99 أضف ردا

احسنت ، اشتغل الان

لكن ماذا لو اردت تجاوز رقم الصفحة لاستعمال pages->{'590321'} للحصول على الداتا بتغيير قيمة titles

waelaljamal أضف ردا

ليس من الضروري الوصول ل extract اكتفي بمستوى pages ثم طبق الدالة عليها، لأن المحتوى فيه نص إضافي فقط ولامشكلة في ذلك

طبق الدالة غلى الرد التصي أو قم بتحويل هذا الغ ض ل string