You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改函数以显示表单textarea中的所有内容行?

问题解决:修改函数以列表形式显示文本域所有行

你的代码存在两个核心问题:一是循环中直接return导致仅返回第一行内容;二是没有构建列表的HTML结构,同时换行符处理不够健壮。以下是修复后的完整代码:

/* Returns texturized all quotes as list */
function cuqts_get_allqts() {
    // 获取存储的引用内容,处理空值
    $quotes_content = get_option('cuqts_quotes');
    if (empty($quotes_content)) {
        return '<p>暂无内容</p>';
    }

    // 分割所有换行类型(兼容Windows/macOS/Linux)
    $quote_lines = preg_split('/\r\n|\r|\n/', $quotes_content);
    // 过滤空行
    $quote_lines = array_filter($quote_lines, function($line) {
        return trim($line) !== '';
    });

    if (empty($quote_lines)) {
        return '<p>暂无有效内容</p>';
    }

    // 构建列表项
    $list_items = [];
    foreach ($quote_lines as $line) {
        // 文本格式化后添加到列表数组
        $list_items[] = '<li>' . wptexturize(trim($line)) . '</li>';
    }

    // 拼接成无序列表返回
    return '<ul>' . implode('', $list_items) . '</ul>';
}

/* Display All Quotes Shortcode */
add_shortcode('cuallqts', 'cuqts_get_allqts');

关键修改说明:

  • 移除循环内的return:原代码在foreach中直接return,函数会在第一次循环就终止,仅返回第一行内容。现在改为将每一行存入数组,最后统一拼接返回。
  • 健壮的换行分割:使用preg_split处理\r\n(Windows)、\r(旧macOS)、\n(Linux/macOS)所有换行类型,避免因系统差异导致分割失败。
  • 过滤空行:通过array_filter移除空行,避免生成空的列表项。
  • 构建列表HTML:将每一行处理后包裹为<li>标签,最后拼接成<ul>无序列表,实现列表形式展示。
  • 完善空值处理:提前判断内容是否为空,返回友好提示而非null,避免前端显示异常。

内容的提问来源于stack exchange,提问作者jfcby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:03:22