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