【问题标题】:In PHP 7, How can I display results that have a specific word in the title?在 PHP 7 中,如何显示标题中包含特定单词的结果?
【发布时间】:2022-07-12 01:12:43
【问题描述】:

只是想感谢这个社区无数次为我保释。今天我试图在 Joomla 组件中创建一个模板覆盖,以仅在 URL 包含“/de/”时显示标题中包含“DE”的结果。我已经尝试了一些东西,但总是得到空白的结果。这是我目前所拥有的:

$keywords = " DE";
$title = JHtml::_('link', $link, $item->title); // Gets Pathway Title
if ((strpos($item, "DE") || strpos($_SERVER['REQUEST_URI'], "de")) == false) {

    $item = $displayData;

} else {

    $item = array_filter($displayData, function (array $item) use ($keywords) {
        return array_key_exists('title', $item) && $item['title'] === $keywords;
    });
}

不确定如何获取结尾包含“DE”的标题。谁能帮帮我?

【问题讨论】:

  • 第一个$item应该是$title吗?
  • 试过了,也没用,是这个意思吗? } else { $item = array_filter($displayData, function (array $title) use ($keywords) { return array_key_exists('title', $item) && $item['title'] === $keywords; });
  • 我的问题是关于strpos($item, "DE")。应该是strpos($title, "DE")

标签: php filter


【解决方案1】:

您需要分别测试每个strpos() 结果,而不是将它们与|| 结合起来。在测试strpos()的结果时,您还必须使用===!==,因为松散的比较会将0 == false视为true。

如果你使用正面条件而不是负面条件,也更容易理解。

if (strpos($_SERVER['REQUEST_URI'], "de")) !== false && strpos($item, "DE") !== false) {
    $item = array_filter($displayData, function (array $item) use ($keywords) {
        return array_key_exists('title', $item) && $item['title'] === $keywords;
    });
} else {
    $item = $displayData;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多