【问题标题】:Adding a comma after each category在每个类别后添加逗号
【发布时间】:2025-12-27 01:50:06
【问题描述】:

这似乎是一个非常直截了当的问题,由于某种原因,我无法弄清楚如何实现我正在寻找的目标。

$category = $html2->find('.video_cats',0);
$category = $genre->plaintext;


<div class="video_cats">
<span>Categories:</span>
    <a href="http://www.example.com" title="Example Category" class="video_cat">House</a>   
    <a href="http://www.example.com" title="Example Category" class="video_cat">The Cat</a> 
    <a href="http://www.example.com" title="Example Category" class="video_cat">Car</a> 
    <a href="http://www.example.com" title="Example Category" class="video_cat">The Dog</a>                                                             
</div>

目前我有一个名为$category的字符串,如果我们print这个字符串的结果,它将返回以下文本一二三四五我正在尝试使其返回文本一、二、三、四、五。非常感谢任何帮助。

编辑: 这是所需的输出 类别:A Cat、Dog、A Horse、House 因为某些类别名称中有空格,我们不能只用逗号替换空格。

【问题讨论】:

  • 我们怎么可能知道哪些类别有空格,哪些没有?某处是否有所有类别的列表?你的$category 字符串来自哪里?
  • 我同意@MattRaines - 根据给定的信息,这个问题无法解决。
  • 您需要在每个类别周围使用一些分隔符来形成此列表。例如:“A Cat” “Dog” “A Horse” “House” 否则,如果它只是一个空格,则没有任何模式能够可靠地拾取它。唯一的可能性是,如果前面的单词是可预测的,例如:“A”或“The”,那么您可以使用正则表达式来匹配定义列表中的前一个单词,然后将下一个单词包含在匹配。但这仍然可能存在问题。
  • 你是如何创建这个字符串的?如果它来自数组或数据库,您应该能够在构建它时添加逗号。
  • 它们是否来自 HTML 中的不同元素?您应该能够在抓取时将它们放入一个数组中,而不是将它们组合成一个字符串。

标签: php


【解决方案1】:

搜索锚点而不是 DIV,然后您可以遍历它们并创建一个数组。

$cat_array = array():
foreach ($html2->find(".video_cat") as $cat) {
    $cat_array[] = $cat->plaintext;
}

$category = implode(', ', $cat_array);

【讨论】:

  • 非常感谢你,我不知道为什么我把它弄得这么复杂,但这让我非常头疼,所以非常感谢你。
【解决方案2】:

您可以像这样使用explodeimplode

$category = implode(", ", explode(" ", $category));

那么就打印出$category的新内容。

在考虑到您的编辑后,上述内容将无法正常工作,但是如果您使用 split 而不是 explode 您可以使用正则表达式对预定义单词列表进行反向引用匹配,例如如:“A”、“The”等……(参见:http://www.regular-expressions.info/refcapture.html

这可能是一个解决方案,但仍然存在相当大的问题。最好的方法是找到一种更好地划分列表的方法。

【讨论】:

  • OP 编辑​​了问题,更改了要求,从而使您的答案无效。