2010-11-27 2 views
1

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

 <?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>"; 

ответ

2

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

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"); 
0

Во-первых, изменить эхо-заявления, чтобы сохранить их в переменной. (и потерять пробелы):

$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>, '; 
} 

Это фактически оставит учебные запятые и пространство. Таким образом, вы можете сначала сконфигурировать строку в новой переменной, обрезать конечное пространство, а затем повторить его. Но это поможет вам начать.

0
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

Ах, я не обработал списки продуктов. Ответ ниже делает это красиво. Замените его три строки эха вызовом моей функции renderGoogleLink выше. – 2010-11-27 02:33:31

+0

Это работа в команде flippin. – Stephen 2010-11-27 02:34:04

1

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

<?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)]); 

?>