Добавьте запятые между <a>-элементами в строку с php - PullRequest
0 голосов
/ 19 сентября 2019

Возможно ли с помощью php создать строку, скажем, <a> -элементов, разделенных запятыми?

Ситуация такова, что цикл foreach добавляет несколько ссылок <a> к$output переменные одна за другой:

$output = '<a>link</a><a>link</a><a>link</a><a>link</a><a>link</a>';

Возможно ли впоследствии в php разделить их запятыми и получить следующую строку?

$output = '<a>link</a>,<a>link</a>,<a>link</a>,<a>link</a>,<a>link</a>';

Или это самый эффективный способдобавить запятую внутри цикла foreach (а затем использовать команду if для пропуска последней или что-то в этом роде, так как это добавит одну запятую слишком много)?

Ответы [ 6 ]

2 голосов
/ 19 сентября 2019
$output = preg_replace("/a><a","/a>,<a",$output);
1 голос
/ 19 сентября 2019

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

В зависимости от вашей ситуации это может, однако, быть не всегдаслучай, поэтому для завершения я хотел бы добавить, что вы также можете использовать функцию rtrim, чтобы легко удалять любые запятые при объединении строк:

foreach($links as $link) {
   $output .= '<a>link</a>,';
}
$output = rtrim($output, ',');

Документация для rtrim может быть прочитана здесь

1 голос
/ 19 сентября 2019

Вы можете заменить </a> на </a>,, затем trim последний `, ', проверьте Демо

echo rtrim(str_replace("</a>","</a>,",$output),",");

1 голос
/ 19 сентября 2019

есть 2 решения

решение 1 (с str_replace () ):

$output = '<a>link</a><a>link</a><a>link</a><a>link</a><a>link</a>';
echo str_replace("</a>","</a>,", $output);

Решение 2 (с взорвать и взорвать * метод 1014 *):

$exploded = explode("</a>",$output);
echo implode("</a>,", $exploded);

Примечание: Вы можете удалить последний `", ", используя rtrim () метод

1 голос
/ 19 сентября 2019

В вашем цикле foreach вместо объединения элемента в конец существующей строки поместите их в массив:

$parts = array();

foreach($list as $item){
    $parts[] = "<a>$item</a>";
}

Затем вы можете просто присоединиться ( взорвать ) элементы массива вместе, чтобы получить желаемый результат:

$output = implode(',', $parts);
1 голос
/ 19 сентября 2019

Простая замена может сделать работу за вас:

preg_replace('/a><a/','a>,<a',$s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...