【问题标题】:Need to create li with list of different links using php explode method需要使用 php explode 方法创建带有不同链接列表的 li
【发布时间】:2011-12-22 08:24:15
【问题描述】:

这是我的非链接的工作 php 分解代码:

<?php
            $textarea = get_custom_field('my_custom_output');
            $array = explode(',',$textarea);
            $output = ''; // initialize the variable
            foreach ($array as $item) {
               $item = trim($item); // clear off white-space
               $output .= '<li>' . $item . '</li>';
            }


?>

            <ul>
            <?php print $output; ?>
            </ul>

..以及定义“my_custom_output”的代码,我将其输入到我的 textarea 字段中:

text1,text2,text3,etc

..和成品:

  • 文本1
  • 文本2
  • 文本3

这样就行了。 现在我想做的是让 text1 成为 mywebsite.com/text1-page-url/ 的链接

我能做到这一点:

<?php
            $textarea = get_custom_field('my_custom_output');
            $array = explode(',',$textarea);
            $output = ''; // initialize the variable
            foreach ($array as $item) {
               $item = trim($item); // clear off white-space
               $output .= '<li class="link-class"><a title="' . $item . '" href="http://mywebsite.com/' . $item_links . '">' . $item . '</a></li>';
            }


?>

            <ul>
            <?php print $output; ?>
            </ul>

现在,我希望 $item_links 只定义 URL 的其余部分。例如: 我想把这个输入到我的文本区域:

text1:text1-page-url,text2:new-text2-page,text3:different-page-text3

输出如下:

  • text1
  • text2
  • ..etc(stackoverflow 迫使我在这篇文章中只有两个链接,因为我只有 0 声望)

我想做的另一件事是将逗号更改为新行。我知道新行的代码是 \n 但我不知道如何将其换出。这样我就可以这样说:

text1:text1-page-url
text2:new-text2-page
text3:different-page-text3

我希望我让你明白这一点。我快到了,我只是卡住了。请帮忙。谢谢!

【问题讨论】:

    标签: php explode


    【解决方案1】:

    只需将循环中的 $item 与 explode() 分开即可:

    <?php
    $separator1 = "\n";
    $separator2 = ":";
    $textarea = get_custom_field('my_custom_output');
    $array = explode($separator1,$textarea);
    $output = ''; // initialize the variable
    foreach ($array as $item) {
        list($item_text, $item_links) = explode($separator2, trim($item));
        $output .= '<li class="link-class"><a title="' . $item_text . '" href="http://mywebsite.com/' . $item_links . '">' . $item_text . '</a></li>';
    }
    ?>
    
    <ul>
    <?php print $output; ?>
    </ul>
    

    并选择你的字符串分隔符,这样$item_text, $item_links 就不会包含它们。

    【讨论】:

    • 我认为这可能有效!我会试试。谢谢!几分钟后回复您,让您知道它是否有效。
    • 现在我需要添加第三分升。希望你能帮忙! =D 非常感谢您迄今为止的所有帮助! stackoverflow.com/questions/8598377/…
    【解决方案2】:

    分解字符串后,您可以再次循环并将文本和链接分离为键/值。比如……

    $array_final = new array();
    $array_temp = explode(',', $textarea);
    foreach($array_temp as $item) {
        list($text, $link) = explode(':', $item);
        $array_final[$text] = $link;
    }
    
    foreach($array_final as $key => $value) {
        echo '<li><a href="'.$value.'">'.$key.'</a></li>';
    }
    

    【讨论】:

    • 我在这里看到了两个缺陷:1)我们不能保证$key是唯一的,所以一些数据可能会丢失; 2)不需要第二个循环,这是浪费资源。
    • 是的,我喜欢你在一次迭代中的表现。
    【解决方案3】:

    要将逗号更改为新行,您可以使用str_replace like

    str_replace(",", "\r\n", $output)
    

    【讨论】:

    • 我的意思是我将手动输入新行。永远不会有任何逗号
    • 似乎我误解了“我想做的另一件事是将逗号更改为新行” - 道歉
    • 没问题。我会为你竖起大拇指,但不幸的是我必须有 15 个代表才能这样做。谢谢您的回答!它可以帮助我学习,即使它与我当前的需求无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多