2012-01-19 2 views
0

У меня есть следующий код:PHP добавить изображение в заголовок, если определенное слово используется

<h2> 
    <?php echo $this->item->title; ?> 
</h2> 

В зависимости от слова втягиваться в качестве названия, мне нужно поместить другое изображение слева от заголовка текст.

Изображения: uk.png, france.png, germany.png

Так что, если текст заголовка говорит Франция, мне нужно тянуть в france.png изображения. Поэтому мне нужен список изображений и названий, которые могут быть использованы, и если заголовок не соответствует изображению, изображение не отображается.

Надеется, что это имеет смысл ...

+0

массивы в PHP являются * особенно * хорошо подходит для «ключей» отображения в «значений ». Это дает вам подсказку? – Jon

+0

Не можете ли вы использовать инструкцию для SWITCH для достижения этой цели? –

ответ

1
<?php 

    $images = array (
    'France' => 'france.png', 
    'UK' => 'uk.png', 
    'Germany' => 'germany.png' 
); 

    if (isset($images[$this->item->title])) { 
?> 

<img src="<?php echo $images[$this->item->title]; ?>" /> 

<?php } ?> 

<h2> 
<?php echo $this->item->title; ?> 
</h2> 
+0

Без какого-либо стиля это поместит изображение над заголовком (ОП запросил «слева»). Просто nitpicking :) – zrvan

0

, например:

function getPic($title) 
{ 
    static $pics = array('uk'  => 'uk.png', 
         'france' => 'france.png', 
         'germany' => 'germany.png'); 
    return isset($pics[$title]) ? "<img src='{$pics[$title]}' >" : ""; 
} 
0

Вы могли бы написать функцию, которая возвращает файл изображения, на основе входной строки, основанную на вашем примере , мы предполагаем, что это $this->item->title. Его основная цель - вернуть строку после определения «страны» из входной строки.

function getCountryImage($input) 
{ 
    // an array containing the mapping of country names to image file names 
    $images = array(
     'France' => 'france.png', 
     'UK' => 'uk.png', 
     'Germany' => 'germany.png'); 

    for each($images as $country => $filename) 
     if($country == $input) 
      return $filename; 

    return ''; 
} 

Единственное, что осталось, если для отображения изображения:

<img src="[image path]/<?php echo getCountryImage($this->item->title);?>" /> 

Имейте большой день.

+0

Во-первых, правильное ключевое слово - 'foreach', а не' для каждого'. Во-вторых, зачем вам нужен цикл? Почему бы не проверить, есть ли в массиве определенный ключ и в этом случае просто вернуть '$ images [$ input]'? –

0

Это может быть неправильный ответ на ваш вопрос, но для ссылок вы можете добиться того, что хотите, используя только css.

a[href$='.zip'], a[href$='.rar'], a[href$='.gzip'] { 
    background:transparent url(../images/zip.png) center left no-repeat; 
    display:inline-block; 
    padding-left:20px; 
    line-height:18px; 
} 

Дополнительную информацию см. web-kreation.

Просто я бы добавил это, так как это хороший совет для тех, кто хочет добавлять значки в ссылки в зависимости от частей ссылки, что несколько похоже на то, что вы хотели.

0

Использование названия страны в качестве ключа для отображения соответствующего изображения может считаться не очень надежным решением.

Я бы порекомендовал вам код страны ISO 3166-1. Затем, исходя из кода coutry, у вас могут быть две функции, которые возвращают название страны и изображение.

Вы можете подойти к коснуться так (я не использовал классы и обработка ошибок в данном примере намеренно):

<?php 
function getCountryNameByIsoCode($iso_code) 
{ 
    static $country_names = array ("FRA" => "France", "GBR" => "United Kingdom", ...); 
    return $country_name[$code]; 
} 

function getCountryFlagImageFileNameByIsoCode($code) 
{ 
    static $country_flags = array ("FRA" => "france.png", "GBR" => "uk.png", ...); 
    return $country_flags[$iso_code]; 
} 
?> 

<h2> 
    <img src="/img/<?php echo getCountryFlagImageFileNameByIsoCode($this->item->iso_code); ?>" alt="" /> 
    <?php echo getCountryNameByIsoCode($this->item->iso_code); ?> 
</h2> 
Смежные вопросы