【问题标题】:PHP Pulling content from a DIV using switch statementPHP使用switch语句从DIV中提取内容
【发布时间】:2018-02-09 23:14:35
【问题描述】:

我已经在我的网站上设置了一个部分,根据调用的 DIV ID 切换内容,但如果变量不在 url 中,则初始“值”会导致错误。

我得到的错误:Undefined index: item

item 是我的变量。

我的 PHP 是这样的:

<?php
    $url = 'file.php';
    $content = file_get_contents( $url );


    $item = $_GET[ 'item' ];
    switch ( $item ) {
        case "content1":
            $start = explode( '<div id="content1">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
            break;

        case "content2":
            $start = explode( '<div id="content2">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
            break;

        case "content3":
            $start = explode( '<div id="content3">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
            break;

        default:
            $start = explode( '<div id="content1">', $content );
            $end = explode( "</div>", $start[ 1 ] );
            echo $end[ 0 ];
    }?>

因此,如果我在 url 的末尾附加 ?item=content1,则代码可以正常工作,但是,在初次访问时(末尾没有 ?item=)我收到上述错误(Undefined index: item

如果有人访问说 index.php 我该怎么做,我不会得到错误,并抛出默认调用的内容?

【问题讨论】:

  • if (isset($_GET['item']))
  • 谢谢,但我不确定你在这里说什么。
  • 这就是您测试他们是否提供参数的方式。使用该参数的代码应该在那个if 语句中。
  • 否则只显示默认内容。
  • 我不确定我应该在代码中的哪个位置包含它或我应该用它做什么。

标签: php switch-statement


【解决方案1】:

使用if statement 检查变量是否已设置。如果不是,请将$item 设置为默认值。

if (isset($_GET['item'])) {
    $item = $_GET['item'];
} else {
    $item = 'content1';
}

此外,似乎不需要switch/case 语句,因为除了您用作explode 分隔符之外,每个案例都是相同的。

$delimiter = '<div id="' . $item . '">';
$start = explode($delimiter, $content);
$end = explode("</div>", $start[ 1 ] );
echo $end[0];

使用DOMDocumentDOMXPath 而不是字符串匹配来解析您的内容可能会更好。

如果您想获得真正的花哨,也可以使用shorthand if statement

【讨论】:

  • 克里斯,谢谢,但你的 if (isset) 也会产生同样的错误。
  • 不应该。你用这个if 语句替换了赋值,对吧?
猜你喜欢
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多