Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个字符中删除PHP substr_Php_Substr - Fatal编程技术网

从一个字符中删除PHP substr

从一个字符中删除PHP substr,php,substr,Php,Substr,我想知道我在这段代码中做错了什么 我正试图从数据库生成菜单,但我有一个问题。有些链接很普通,比如“index.php”,但有些在数据库中看起来像“browse.php | Some.php | other.php”。。我想过滤它并返回所有正常值,比如“index.php”,在“奇怪的链接”出现的地方,只需剪切“|”字符以外的任何内容,变成“browse.php”。现在,使用我正在使用的代码,index.php不再出现,但奇怪的链接问题得到了解决。。我做错了什么 谢谢你的建议 $sql = "S

我想知道我在这段代码中做错了什么

我正试图从数据库生成菜单,但我有一个问题。有些链接很普通,比如“index.php”,但有些在数据库中看起来像“browse.php | Some.php | other.php”。。我想过滤它并返回所有正常值,比如“index.php”,在“奇怪的链接”出现的地方,只需剪切“|”字符以外的任何内容,变成“browse.php”。现在,使用我正在使用的代码,index.php不再出现,但奇怪的链接问题得到了解决。。我做错了什么

谢谢你的建议

 $sql = "SELECT * FROM $tablename WHERE `Parent` = '0' AND Type LIKE 'top' ORDER BY `Order` ASC";
    $result = mysql_query($sql) or die ("Error: Query Failed! " .mysql_error());
    $output = "<ul>";
    while ($rs = mysql_fetch_array($result)) {
        $output .= "<li class='menu_top' id='".$rs['ID']."'><a href='".substr($rs['Link'], 0, strpos($rs['Link'], '|'))."'>".$rs['Name']."</a></li>";
        //$output .= "<li class='menu_top' id='".$rs['ID']."'><a href='".$rs['Link']."'>".$rs['Name']."</a></li>";
        $sql2 = "SELECT * FROM $tablename WHERE `Parent` = '".$rs['ID']."' ORDER BY `Order` ASC";
        $result2 = mysql_query($sql2) or die ("Error: Query Failed! " .mysql_error());
        if (mysql_num_rows($result2) != 0) {
          $output .= "<ul class='menu_sub' id='".$rs['ID']."'>";
          while ($rs2 = mysql_fetch_array($result2)){
             $output .= "<li><a href='".$rs2['Link']."'>".$rs2['Name']."</a></li>";
          }
          $output .= "</ul>";
       }
    }
    $output .="</ul>";
    echo $output;
$sql=“从$tablename中选择*,其中'Parent`='0'并按'ORDER`ASC'键入类似'top'的顺序”;
$result=mysql\u query($sql)或die(“错误:查询失败!”。mysql\u Error());
$output=“
    ”; 而($rs=mysql\u fetch\u数组($result)){ $output.=“”; //$output.=“”; $sql2=“从$tablename中选择*,其中`Parent`='”$rs['ID']。“`ORDER BY`ORDER`ASC”; $result2=mysql\u query($sql2)或die(“错误:查询失败!”.mysql\u Error()); 如果(mysql\u num\u行($result2)!=0){ $output.=“”; } } $output.=“
”; echo$输出;
这个

当链接类似于'index.php'时返回false,因此您正在执行以下操作:

substr($string, 0, false);

您可以使用正则表达式
\\\\\\\\..*$
删除第一个
\\
之后的所有内容

使用preg_replace的示例代码

// returns only first link before |
preg_replace('/\|.*$/','',$link);

只需在需要放置链接的地方使用此代码,如果链接仅为
index.php
index.php | some.php
等,就可以了。

分解“|”上的链接字符串,然后使用结果数组的第0个元素谢谢,我使用了preg_replace,对我这样的noob来说更容易:)
// returns only first link before |
preg_replace('/\|.*$/','',$link);