我在我的网站上设置了一个部分,根据调用的DIV ID切换内容,但如果变量不在网址中,则初始“值”会导致错误。
我得到的错误:Undefined index: 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 ];
}?>
因此,如果我在我的网址末尾附加?item=content1
代码,但是,在初次访问时(最后没有?item=
),代码工作正常我得到了上述错误({{1} })
如果有人访问了index.php,我会怎么做?我不会收到错误,并抛出默认的被叫内容?
答案 0 :(得分: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];
最好使用DOMDocument
和DOMXPath
代替字符串匹配来解析您的内容。
如果您想要真正想要的话,也可以使用shorthand if statement。