Позвольте мне предвосхитить это, я НЕ PHP человек. Мой офис недавно потерял доступ к нашим разработчикам из-за блокировки второстепенных сервисов, и мне нужна помощь. У меня есть RSS-канал, созданный нашей CMS, который анализируется PHP. Выходные данные PHP затем генерируются в HTML с помощью jQuery. Я обнаружил, что если пользователь CMS забывает заполнить части нашего генератора RSS-каналов, наш анализатор (или jQuery) не может обрабатывать нулевые значения. Мне нужна помощь в выяснении того, как защитить поля от ошибок, подставив некоторые значения по умолчанию, если поля в XML равны нулю. Например, если пользователь забывает ввести изображение, вместо него будет подставлено значение по умолчанию «image.png», или если он забудет категорию, укажите «Категория не указана». появляются.
Я нашел метод - PHP XML Expat Parser, но я не знаю, как (и где) вставить его в мой код. Если бы кто-то мог начать меня с некоторого кода, я думаю, что я мог бы сделать остальные поля. ИЛИ любая помощь, которую вы можете предоставить, будет принята.
<?php
header('Content-Type: application/json');
//Step 1: process the parameters
$url = $_REQUEST['sUrl'];
$year = $_REQUEST['getYear'];
$limit = $_REQUEST['limit'];
if ($limit == 0) {
$limit = 1000;
}
//Step 2: declare the item class for RSS item array
class Item
{
public $title;
public $link;
public $description;
public $pubDate;
public $category;
public $ImgLink;
}
//step 3: load the RSS feed into an XML document
$rss = simplexml_load_file($url);
//step 4: initialize the item counter and the item array.
$items = 0;
$outlist = array();
//step 5: load the RSS item array
foreach ($rss->channel->item as $item) {
//The following lines will format the pubDate into a form
//that is more amenable for display on web pages.
//Format example: August 14, 2019
$date = date_create($item->pubDate);
$yr = date('Y', strtotime($item->pubDate));
$pubDate = date_format( $date,"F d, Y");
//The item only gets loaded into the array if the year matches the
//selected year, and if the array item count has not been reached.
if ($yr == $year && $items < $limit) {
//First, a new Item is instantiated based on the class declaration
//Then we populate the properties with those of the selected item.
$myItem = new Item();
$myItem->title = $item->title;
$myItem->link = $item->link;
$myItem->description = $item->description;
$myItem->pubDate = $pubDate;
$myItem->category = $item->category;
$myItem->ImgLink = $item->children('media', True)->content->attributes()->url;
array_push($outlist,$myItem);
//increment the item array counter
$items = $items + 1;
}
}
//step 6: encode the outbound array into JSON format
$encodedList = json_encode($outlist);
//final step: return the JSON-encoded array.
echo $encodedList;
?>