2014-11-24 3 views
0

Я изо всех сил пытаюсь получить значение элемента в определенном массиве. Я хотел бы получить значение «логотипа» в этом случае, чтобы вернуть «Logo Google 2013 Official.svg» из приведенного ниже кода. Любая помощь очень ценится.Получение значения с массивом

<html> 
<head> 
</head> 
<body> 

<html> 

<body> 
<h2>Search</h2> 
<form method="post"> 
Search: <input type="text" name="q" value="google" /> 
<input type="submit" value="Submit"> 
</form> 

<?php 

if (isset($_POST['q'])) { 
$search = $_POST['q']; 


$url_2 = 
"http://en.wikipedia.org/w/api.php? 
action=query&prop=revisions&rvprop=content&format=json&titles=$search&rvsection=0&continue="; 
$res_2 = file_get_contents($url_2); 
$data_2 = json_decode($res_2); 


?> 

<h2>Search results for '<?php echo $search; ?>'</h2> 
<ol> 
<?php foreach ($data_2->query->pages as $r): 

?> 

<li> 

<?php foreach($r->revisions[0] as $a); 
echo $a; ?> 

</li> 
<?php endforeach; ?> 
</ol> 

<?php 
} 
?> 

</body> 
</html> 

Полученный $url_2 является http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=google&rvsection=0&continue=

+0

Вы уверены, что вы выложили весь код? Я не вижу ни одного логотипа или другого элемента, хранящего это имя файла в любом месте этого кода. – tkounenis

+0

@tkounenis Привет Я позитивен - просто нажмите поиск, и там в результирующем массиве текста «logo = Logo Google 2013 Official.svg». Технически я полагаю, что это в элементе Infobox. Пожалуйста, дайте мне знать, если вы все еще не видите его – Oroku

ответ

1

использовать регулярные выражения, чтобы захватить то, что вы хотите:

<ol> 
<?php foreach ($data_2->query->pages as $r): ?> 
    <?php foreach($r->revisions[0] as $a): ?> 
    <li> 
     <?php 
      preg_match_all('/ logo += +([^|]+)/', $a, $result, PREG_PATTERN_ORDER); 
      echo trim($result[0][0]); // prints 'Logo Google 2013 Official.svg' 
     ?> 
    </li> 
    <?php endforeach; ?> 
<?php endforeach; ?> 
</ol> 
+0

отличное спасибо! Извините, что я был болен, мне было интересно, можно ли это обобщить, чтобы вернуть значение логотипа из Infobox для любой компании в Википедии? – Oroku

+0

На практике он вернет все, что он найдет, после первого появления «logo =» до первого символа конвейера ('** | **'). После краткого исследования в выводе вашей ссылки не всегда есть строка «logo =», поэтому вам не гарантируется, что вы вернете логотип. – tkounenis

+0

Еще раз спасибо, что вы нашли способ получить логотип = строку, используя другую ссылку? – Oroku

Смежные вопросы