Как вывести одно слово в виде ссылки?

227
25 мая 2017, 08:00

Добрый день всем! Подскажите пожалуйста, есть строка вида: "слово 1, слово 2"

Есть php код:

<? 
$str = "слово1,слово2"; 
for($i=0;$i<count($p);$i++) { 
    echo '<a href="#">'.$p[$i].'</a>';  
} 
?>

Сейчас в результате выводится слово1слово2

слово1слово2

Как сделать подстановку в ссылку значения, так чтобы для каждой новой ссылки выводилось новое слово?

<a href="">слово1</a> 
 
<a href="">слово2</a>

Весь код страницы:

<? 
 
preg_match('/\{[,0-9]{1,120}\}/', $current_sub['AnimFotoId'],$gal,PREG_OFFSET_CAPTURE); 
$gal = $gal[0][0]; 
$gal = preg_replace('/\{/', '',$gal); 
$gal = explode(',',preg_replace('/\}/', '',$gal)); 
if (!count($gal)) { 
unset($gal); 
} 
?> 
 
<? 
$str = $current_sub['AnimTitleFoto']; 
$strArray = explode(",", $str); 
 
$mp = '';                  
 
?> 
 
 
                        <? 
                        if ($gal[0] <> '') {?> 
                         
                        <div class="fotos" style="padding:30px;padding-top:0px;text-align:center"> 
                        <? 
                         
                        echo '<div class="g-content"><h2>'.$current_sub["AnimFotoZagolovok"].'</h2></div> '; 
                        echo '<div class="block-events">'; 
                        echo '<div class="items">'; 
                         
                         
                       foreach ($gal as $item) { 
                        $item = trim($item); 
                        $format = '.jpg'; 
                  
                        if (!@fopen('http://k-chydes.ru/netcat_files/2344_'.$item.$format,'r')) { 
                        $format = '.JPG'; 
                        } 
                         
                         
                       echo '<div class="item">'; 
                        echo '<div class="image"><span><a style="margin:10px;" href="/main/portfolio/portfolio_'.$item.'.html"><img  width="256" height="170" src="/netcat_files/2344_'.$item.$format.'" /></a></span></div>'; 
  echo '<div class="title">'; 
   
echo '<a href="#">'; 
 
$i = 0; 
 
    foreach ($strArray as $key => $word) { 
 
          if($i == $key) 
                { 
          $mp .= ''.$strArray[$key].'';  
                    } 
    } 
 
echo $mp; 
 
$i++; 
 
echo '</a>';        
   
  echo '</div>'; 
                        
                        echo '</div>'; 
                        } 
                        echo '</div>'; 
                        echo '</div>'; 
                         ?> 
                        </div> 
                        <? 
                         
                        } 
                        ?>

Answer 1

Воспользуйтесь функцией explode http://php.net/manual/ru/function.explode.php

<?php
    $str = "слово1,слово2";
    $strArray = explode(",", $str);
    foreach ($strArray as $key => $word) {
        echo '<a href="#">'.$word.'</a>'; 
    }

Офтопик не издевайтесь над собой, форматируйте код так , что бы было понятно что и где.

Ваш код после правки:

<?php
preg_match('/\{[,0-9]{1,120}\}/', $current_sub['AnimFotoId'], $gal, PREG_OFFSET_CAPTURE);
$gal = $gal[0][0];
$gal = preg_replace('/\{/', '',$gal);
$gal = explode(',',preg_replace('/\}/', '',$gal));
if (!count($gal)) {
    unset($gal);
}
$strArray = explode(",", $current_sub['AnimTitleFoto']);
if ($gal[0] <> '') {?>
    <div class="fotos" style="padding:30px;padding-top:0px;text-align:center">
    <?
        echo '<div class="g-content"><h2>'.$current_sub["AnimFotoZagolovok"].'</h2></div> ';
        echo '<div class="block-events">';
            echo '<div class="items">';
                foreach ($gal as $key => $item) {
                    $item = trim($item);
                    $format = '.jpg';
                    if (!@fopen('http://k-chydes.ru/netcat_files/2344_'.$item.$format,'r')) {
                        $format = '.JPG';
                    }
                    echo '<div class="item">';
                        echo '<div class="image"><span><a style="margin:10px;" href="/main/portfolio/portfolio_'.$item.'.html"><img  width="256" height="170" src="/netcat_files/2344_'.$item.$format.'" /></a></span></div>';
                        echo '<div class="title">';
                            // Если количество и порядок картинок и подписей совпадает(по идее должно) то можно не мудрить.
                            // Ключ ($key) будет совпадать
                            if (isset($strArray[$key])) {
                                echo '<a href="#">';
                                    echo $strArray[$key];
                                echo '</a>';
                            }
                        echo '</div>';
                    echo '</div>';
                }
            echo '</div>';
        echo '</div>'; ?>
    </div>
<? } ?>

На правах codereview:

  1. @ - в коде быть не должно. Ошибки надо обрабатывать, а не прятать
  2. fopen('http://k-chydes.ru/netcat_files/2344... - Запрос к чужому ресурсу в цикле. Плохая идея, так как долго, плюс где гарантия что ресурс доступен?
  3. Пользуйтесь шаблонизаторами (например twig https://twig.sensiolabs.org/). Что бы не мешать так html и php.
  4. Не знаю где и как вы получаете "$current_sub" но обработка быглядит мутно.
READ ALSO
Верстка списка в несколько колонок

Верстка списка в несколько колонок

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

403
отправка 2 action в 1 форме

отправка 2 action в 1 форме

можно ли добавить еще 1 action, чтобы значение из формы передавалось на еще одну страницуЕсли можно, то как?

208
Сравнить два значения и показать ошибку

Сравнить два значения и показать ошибку

Нужно, чтобы после ввода значения в max сразу происходило сравнение

264
C# parsing MTOM response from web-service

C# parsing MTOM response from web-service

Веб-сервис поставщика возвращает ответ вида (MTOM):

408