Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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
未定义的偏移量:2在php中使用preg_split_Php_Codeigniter_Preg Split - Fatal编程技术网

未定义的偏移量:2在php中使用preg_split

未定义的偏移量:2在php中使用preg_split,php,codeigniter,preg-split,Php,Codeigniter,Preg Split,我目前正在开发一个系统。我有标签菜单在用户,在这里所有的菜单将显示。我有一个名为“添加菜单”的模块,管理员将在其中添加另一个菜单,在创建新菜单后,它将添加到用户的选项卡菜单中。我已经给了菜单,像铁板和玉米饼,我做的事情是当用户点击铁板,它会重定向到该菜单 像这样:localhost:/xxxx/SizzlingPlate。然后它将显示嘶嘶声板的信息 示例:名称: SizzlingPlate Price: 50 Stocks: 5 所以在这里,我用preg_分割来分隔2个大写字母,有一个空格,

我目前正在开发一个系统。我有标签菜单在用户,在这里所有的菜单将显示。我有一个名为“添加菜单”的模块,管理员将在其中添加另一个菜单,在创建新菜单后,它将添加到用户的选项卡菜单中。我已经给了菜单,像铁板和玉米饼,我做的事情是当用户点击铁板,它会重定向到该菜单

像这样:localhost:/xxxx/SizzlingPlate。然后它将显示嘶嘶声板的信息

示例:名称:

SizzlingPlate
Price:  50
Stocks: 5
所以在这里,我用preg_分割来分隔2个大写字母,有一个空格,所以in会变成这样

例如:

Name:   Sizzling Plate
Pirce:  50
Stocks: 5  
但我遇到了错误未定义的偏移量:2时,添加的菜单只是一个字像玉米饼

注意:我正在检索菜单表中的所有数据。我的示例数据是SizzlingPlate。我还试图为订单页面和控制器设置条件,但仍然得到未定义的偏移量:2

if($pieces[2] != '')
{
    $concat = $pieces[1] . " " .    $pieces[2];

}
else
{
    $concat = $pieces[0] . " " .    $pieces[1];
}
问题:我如何修复它

菜单

<div class="row">
    <div class="col-md-1"></div>
    <div class="col-md-10" style="padding-left: 0px; padding-right: 0px;">
        <?php foreach($menu as $row):?>
        <img src="<?= base_url().'uploads/'.$row->menu_image?>" style="max-width: 33%">
        <?php $name = $row->menu_name; 
            $remove_space = strtolower(str_replace(' ', '', $name));?>
        <a href="order/<?= $name?>"><button class="btn btn-primary btn-md">Order Now </button></a>
        <?php endforeach;?>
    </div>
    <div class="col-md-1"></div>
</div>
<?php $order_name = $name->menu_name;
                    $pieces = preg_split('/(?=[A-Z])/',$order_name);

                        $concat = $pieces[1] . " " .    $pieces[2];


                    var_dump($concat);
                    if($concat == $concat){?>

                    <div class="form-group">
                        <input type="text" disabled="" name="name" id="name" value="<?= $concat?>"">
                        <input type="hidden"  name="name" id="name" value="<?= $concat?>">
                    </div>
                <?php }?>
已编辑

问题:如果我想把它显示回原样呢

我做过,但没用

$uppercase_menu_name = $this->input->post('menu_name');

            $pieces = preg_replace('/(.)(?=[a-Z])/u', '$1', $uppercase_menu_name);

如果您只想在两个单词之间添加空格,可以使用
preg\u replace

preg_replace('/(.)(?=[A-Z])/u', '$1 ', $name);
// Taco -> Taco
// SizzlingPlate -> Sizzling Plate
我从Laravel源代码中抓取了这个示例:

哦,我不知道那个函数,让我试试,先生:)我现在正在做一个实验,要回到它原来的名字,我就把空格去掉好吗?preg_replace('/(?=[A-Z])/u','$1',$name);像这样?只要使用
str_replace(“”,,$name)就更容易了
preg_replace('/(.)(?=[A-Z])/u', '$1 ', $name);
// Taco -> Taco
// SizzlingPlate -> Sizzling Plate