Перенос ссылок вокруг слов php - PullRequest
1 голос
/ 27 ноября 2010

Здравствуйте, я бы хотел обернуть теги поисковой ссылки Google вокруг каждого из продуктов, которые нужно сажать в данный месяц, в этот блок кода.Но не хочу выписывать все теги a href вручную, так как мне нужно сделать пару блоков, похожих на это, и это займет довольно много времени.Есть ли способ получить php, чтобы сделать это, используя что-то вроде preg_replace.

        <?php switch(date(n)) {
    case 1:
        echo "Garlic, Onion";
        break;
    case 2:
        echo "Cabbage, Carrot, Garlic, Leek, Pea, Wheat";
        break;
    case 3:
        echo "Cabbage, Carrot, Chives, Aubergine, Garlic, Leek, Lettuce, Pea, Rhubarb, Spinach, Tomato";
        break;
    case 4:
        echo "Cabbage, Carrot, Chives, Cucumber, Aubergine, Garlic, Leek, Lettuce, Pea, Pumpkin, Rhubarb, Spinach, Tomato, courgette";
        break;
    case 5:
        echo "Asparagus, Broad Beans, Cabbage, Carrot, Chives, Cucumber, Leek, Lettuce, Oregano, Pea, Pumpkin, Rhubarb, Spinach, Tomato, courgette";
        break;
    case 6:
        echo "Asparagus, Broad Beans, Cabbage, Carrot, Cucumber, Kale, Lettuce, Oregano, Pea, Pumpkin, Rhubarb, Sage, Spinach, Tomato, courgette";
        break;
    case 7:
        echo "Asparagus, Broad Beans, Broccoli, Brussel Sprouts, Cabbage, Carrot, Cauliflower, Cucumber, Kale, Oregano, Parsley, Rhubarb, Sage";
        break;
    case 8:
        echo "Asparagus, Broccoli, Brussel Sprouts, Cabbage, Carrot, Cauliflower, Kale, Oregano, Parsley, Sage";
        break;
    case 9:
        echo "Asparagus, Broccoli, Brussel Sprouts, Cabbage, Carrot, Cauliflower, Kale, Oregano, Parsley";
        break;
    case 10:
        echo "Cabbage, Onion, Parsley";
        break;
    case 11:
        echo "Apples, Garlic, Onion";
        break;
    case 12:
        echo "Apples, Garlic, Onion";
        break;
    }?>

Например, для декабря, случай 12 Я хотел бы, чтобы строка была:

echo "<a href='http://www.google.co.uk/search?q=Apples'>Apples</a>, <a href='http://www.google.co.uk/search?q=Garlic'>Garlic</a>, <a href='http://www.google.co.uk/search?q=Onion'>Onion</a>";

Ответы [ 4 ]

2 голосов
/ 27 ноября 2010

Если это только слова без знаков препинания, вы можете использовать немного магии регулярных выражений:

function renderGoogleLinks($line) {
    return preg_replace('/([^[:punct:]\s\t\n\r]+)/', '<a href="http://www.google.co.uk/search?q=\\1">\\1</a>', $line);
}

echo renderGoogleLinks("Apples, Garlic, Onion");
1 голос
/ 01 декабря 2010

Вот еще одно решение с использованием массивов:

<?php

$plants = array(
    1  => array('Garlic', 'Onion'),
    2  => array('Cabbage', 'Carrot', 'Garlic', 'Leek', 'Pea', 'Wheat'),
    3  => array('Cabbage', 'Carrot', 'Chives', 'Aubergine', 'Garlic', 'Leek', 'Lettuce', 'Pea', 'Rhubarb', 'Spinach', 'Tomato'),
    4  => array('Cabbage', 'Carrot', 'Chives', 'Cucumber', 'Aubergine', 'Garlic', 'Leek', 'Lettuce', 'Pea', 'Pumpkin', 'Rhubarb', 'Spinach', 'Tomato', 'courgette'),
    5  => array('Asparagus', 'Broad Beans', 'Cabbage', 'Carrot', 'Chives', 'Cucumber', 'Leek', 'Lettuce', 'Oregano', 'Pea', 'Pumpkin', 'Rhubarb', 'Spinach', 'Tomato', 'courgette'),
    6  => array('Asparagus', 'Broad Beans', 'Cabbage', 'Carrot', 'Cucumber', 'Kale', 'Lettuce', 'Oregano', 'Pea', 'Pumpkin', 'Rhubarb', 'Sage', 'Spinach', 'Tomato', 'courgette'),
    7  => array('Asparagus', 'Broad Beans', 'Broccoli', 'Brussel Sprouts', 'Cabbage', 'Carrot', 'Cauliflower', 'Cucumber', 'Kale', 'Oregano', 'Parsley', 'Rhubarb', 'Sage'),
    8  => array('Asparagus', 'Broccoli', 'Brussel Sprouts', 'Cabbage', 'Carrot', 'Cauliflower', 'Kale', 'Oregano', 'Parsley', 'Sage'),
    9  => array('Asparagus', 'Broccoli', 'Brussel Sprouts', 'Cabbage', 'Carrot', 'Cauliflower', 'Kale', 'Oregano', 'Parsley'),
    10 => array('Cabbage', 'Onion', 'Parsley'),
    11 => array('Apples', 'Garlic', 'Onion'),
    12 => array('Apples', 'Garlic', 'Onion'),
);

function googleLink($myarray) {
    $str = '';
    foreach($myarray as $var) {
        $end  = (next($myarray) == true) ? ', ' : '.';
        $str .= '<a href="http://www.google.co.uk/search?q='.$var.'">'.$var.'</a>'.$end;
    }
    return $str;
}

echo googleLink($plants[date(n)]);

?>
0 голосов
/ 27 ноября 2010
function renderGoogleLink($searchTerm){
     $anchor_template = '<a href="http://www.google.co.uk/search?q=#TERM#">#TERM#</a>';
     echo preg_replace("#TERM#", $searchTerm, $anchor_template);
}
0 голосов
/ 27 ноября 2010

Сначала измените операторы echo, чтобы сохранить их в переменной.(и пропустите пробелы) примерно так:

$food = "Apples,Garlic,Onion";

Поиск-замена в вашей IDE должна быстро разобраться с этим.Затем выполните следующие действия после блока переключения:

$foods = explode(',', $food);
foreach ($foods as $food) {
    echo '<a href="http://www.google.co.uk/search?q=';
    echo $food;
    echo '">' . $food . '</a>, ';
}

Это фактически оставит тренировочную запятую и пробел.Итак, вы можете сначала объединить строку в новой переменной, обрезать завершающий пробел, а затем повторить ее.Но это поможет вам начать.

...