Любой способ получить доступ к клавишам с именами на массиве без петли?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Любой способ получить доступ к клавишам с именами на массиве без петли?

Сообщение Anonymous »

Настройка
Это должно делать конкретно с картами Twitter, но я ищу более общее (т.е. не специфическое решение для карт Twitter), так как многие мета -теги имеют имена. Что -то вроде ... < /p> Когда вы запускаете get_meta_tags () на веб -сайте, который использует карты, вы получите возврат, который выглядит как ...

Код: Выделить всё

[
... bunch of other meta tags ...

"twitter:card" : "... tag content ...",
"twitter:description" : "... tag content ...",
"twitter:title" : "... tag content ...",
"twitter:site" : "... tag content ...",
"twitter:image" : "... tag content ...",
"twitter:creator" : "... tag content ...",

... maybe some more tags ...
]
Все ключи, которые имеют отношение к карте Twitter, - это имена - я имею в виду, что каждый из них предварительно предназначен для Twitter: .
Даже если на странице присутствуют теги карты Twitter, а не все теги, указанные выше, обязательно будут. Иногда это все, иногда это всего лишь пара.

Код: Выделить всё

$tagsList = @get_meta_tags($url);
Потому что вы не знаете , конечно, , какие теги будут присутствовать, не имеет смысла проверять для них всех ...

Код: Выделить всё

if(isset($tagsList['twitter:card'])) {
// Do something
}

if(isset($tagsList['twitter:description'])) {
// Do something
}

... and so on ...
Этот подход также особенно неэффективен, если вы не знаете Каждое возможное имя тега, которое может присутствовать, или Twitter решает изменить текущий стандарт.

Код: Выделить всё

$twitterList = array();

foreach($tagsList as $tagName => $tagCont) {

if(strpos(strtolower($tagName), 'twitter:') === 0) {

// root = 'twitter', sub = 'card' or 'description' or ...
list($root, $sub) = explode(':', $tagName);

$twitterList[] = array(
'root' => $root,   // Don't really need this
'sub' => $sub,
'content' => $tagCont
);

}

}
< /code>
И это работает. Это точно и возвращает ваши теги в Твиттере в хорошем списке. Но если мне нужны только теги, относящиеся к карточке Twitter, какого черта мне нужно заняться, пробегая все из них! Я заинтересован только в Twitter: 
One, поэтому я не хочу тратить ресурсы и провести время через каждый тег.
Что -то вроде ...

Код: Выделить всё

$twitterTags = $tagsList['twitter:'];
< /code>
, где вывод был бы в соответствии с ... < /p>
$twitterTags : [
'card' : 'card content',
'description' : 'desc content',
... and so on ...
]
Я считаю, что вы сможете использовать array_map () , который может сократить количество используемых строк кода, но вы все равно в конечном итоге заканчивают каждую ключ. (из них из них), разница во времени/ресурсах между петлей грубой силы и более элегантным решением будет незначительным. Но это все еще интересное упражнение.

Подробнее здесь: https://stackoverflow.com/questions/468 ... ut-looping
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»