php - 为什么爆炸不分离我的字符串值?
问题描述
我正在尝试explode
从字符串中获取值,但它不起作用。
我想做这个
$requestedby = 'Hello World-two';
进入
$requestedname = 'Hello';
$requestedlast_name = 'World-two';
我试过使用explode
并且array_pad
我保持它没有爆炸价值,它保持不变。
$requestedby = 'Hello World-Two';
list($requestedname, $requestedlast_name) = explode(' ', "$requestedby");
echo $requestedname;
我收到此错误,好像值中没有空格
注意:未定义的偏移量:1
完整代码如下:
<?php require('includes/config.php');
//if not logged in redirect to login page
if(!$user->is_logged_in()){ header('Location: index.php'); exit(); }
//include header template
require('layout/header.php');
$stmt = $db->query("SELECT name, last_name FROM `designers` WHERE `username` = '" . $_SESSION['username'] . "'");
$result1 = $stmt->fetch(PDO::FETCH_ASSOC);
$name = $result1['name'];
$last_name = $result1['last_name'];
if (isset($_GET['pageno'])) {
$pageno = $_GET['pageno'];
} else {
$pageno = 1;
}
$no_of_records_per_page = 15;
$offset = ($pageno-1) * $no_of_records_per_page;
$conn=mysqli_connect("xxxx", "xxxx", "xxxx", "xxxx");
$total_pages_sql = "SELECT COUNT(*) FROM requests";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);
?>
<?php
$query = "SELECT * FROM `requests` LIMIT $offset,
$no_of_records_per_page";
$search_result = filterTable($query);
// function to connect and execute the query
function filterTable($query)
{
$connect = mysqli_connect("xxxx", "xxxx", "xxxx", "xxxx");
$filter_Result = mysqli_query($connect, $query);
return $filter_Result;
}
?>
<?php
if(empty($_GET['id'])){
?>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<?php
if(isset($_GET['action']) && $_GET['action'] == 'updated'){
$IDrequest = $_GET['IDrequest'];
echo "<h2 class='bg-success'>Request number $IDrequest has been updated successfully.</h2>";
$requestedby = $_GET['requestedby'];
list($requestedname, $requestedlast_name) = explode(' ', "$requestedby");
}?>
<h3>View Requests</h3><hr>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<a href="index.php">Back</a><br />
<ul class="pagination">
<li><a href="?pageno=1">First</a></li>
<li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
</li>
<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; }
else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
</li>
<li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>
<table>
<tr>
<th>Request Number</th>
<th>Request Type</th>
<th>Requested By</th>
<th>Due Date</th>
<th>Status</th>
<th>Designer Assigned</th>
<th>Action</th>
</tr>
<!-- populate table from mysql database -->
<?php while($row = mysqli_fetch_array($search_result)):?>
<tr>
<td><?php echo $row['requestID'];?></td>
<td><?php echo $row['request_type'];?></td>
<td><?php echo $row['designer'];?></td>
<td><?php echo $row['duedate'];?></td>
<td><?php echo $row['status'];?></td>
<td><?php echo $row['wip_designer'];?></td>
<td><?php
if ($row['status'] == 'Submitted') {
?><a href="viewrequests.php?id=<?php echo $row['requestID'];?>" style="color: #F00">Start</a>
<?php
}
if ($row['status'] == 'In Progress') { ?>
<a href="viewrequests.php?id=<?php echo $row['requestID'];?>">Continue</a>
<?php
}
if ($row['status'] == 'Completed') { ?>
<a href="viewrequests.php?id=<?php echo $row['requestID'];?>" style="color: #69c45a">Completed</a><?php
}
?></td>
</tr>
<?php endwhile;?>
</table>
</div></div>
<?php
} else {
//if form has been submitted process it
if(isset($_POST['submit'])){
$requestedby = $_POST['requestedby'];
$IDrequest = $_POST['IDrequest'];
$status = $_POST['status'];
$wip_designer = $_POST['wip_designer'];
if(!isset($error)){
$stmt = $db->prepare('UPDATE requests SET status = :status,
wip_designer = :wip_designer WHERE requestID = :id');
$stmt->execute(array(
':status' => $status,
':wip_designer' => $wip_designer,
':id' => $_GET['id']
));
header('Location: viewrequests.php?IDrequest='.$IDrequest.'&action=updated&requestedby='.$requestedby.'');
exit;
}
}
$stmt = $db->query("SELECT * FROM `requests` WHERE `requestID` = '" . $_GET['id'] . "'");
$result4 = $stmt->fetch(PDO::FETCH_ASSOC);
?>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<h3>Working on Request # <?php echo $result4['requestID']; ?></h3><hr>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$('[name=status]').change(function(){
if($(this).val() === 'In Progress'){
alert("Please only continue if you will be starting this project. Otherwise go back.");
}
if($(this).val() === 'Completed'){
alert("Please only continue after checking that every single task on this request is done. Otherwise go back.");
}
});
});
</script>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<form role="form" method="post" action="">
<div class="form-group">Requested by: <input type="text" name="requestedby" id="requestedby" class="form-control input-lg" placeholder="" value="<?php echo $result4['designer']; ?>" tabindex="1" readonly><br />Customer:<br />
<input type="text" name="customer" id="customer" class="form-control input-lg" placeholder="" value="<?php echo $result4['customer']; ?>" tabindex="2" readonly><br />Due Date:<br />
<input type="text" name="duedate" id="duedate" class="form-control input-lg" placeholder="" value="<?php echo $result4['duedate']; ?>" tabindex="3" readonly><br />DPI:<br />
<input type="text" name="dpi" id="dpi" class="form-control input-lg" placeholder="" value="<?php echo $result4['customer']; ?>" tabindex="4" readonly><br />Background Color:<br />
<input type="text" name="backgroundcolor" id="backgroundcolor" class="form-control input-lg" placeholder="" value="<?php echo $result4['backgroundcolor']; ?>" tabindex="5" readonly><br />Dimensions:<br />
<input type="text" name="dimensions" id="dimensions" class="form-control input-lg" placeholder="" value="<?php echo $result4['dimensions']; ?>" tabindex="6" readonly><br />Orientation:<br />
<input type="text" name="orientation" id="orientation" class="form-control input-lg" placeholder="" value="<?php echo $result4['orientation']; ?>" tabindex="7" readonly><br />Pack Size:<br />
<input type="text" name="packsize" id="packsize" class="form-control input-lg" placeholder="" value="<?php echo $result4['packsize']; ?>" tabindex="8" readonly>
<br />Styles and Colorways:<br />
<textarea rows="10" cols="50" name="styles_colorways" id="styles_colorways" class="form-control input-lg" tabindex="9" readonly><?php echo $result4['styles_colorways']; ?></textarea><br />Current Status:<br />
<select name="status" id="status" class="form-control input-lg" tabindex="10">
<?php
if($result4['status'] == 'Submitted') {
?><option value="Submitted">Submitted</option>
<option value="In Progress">In Progress</option>
<option value="Completed">Completed</option>
<?php
}
if($result4['status'] == 'In Progress') {
?><option value="In Progress">In Progress</option>
<option value="Completed">Completed</option>
<?php
}
if($result4['status'] == 'Completed') {
?><option value="Completed">Completed</option>
<?php
}
?>
</select><br />Designer Assigned:<br />
<input type="text" name="wip_designer" id="wip_designer" class="form-control input-lg" placeholder="" value="<?php echo $result1['name']; ?> <?php echo $result1['last_name']; ?>" tabindex="11" readonly><br />
<input type="submit" name="submit" value="Update" class="btn btn-primary btn-block btn-lg" placeholder="Update" tabindex="12">
<input type="hidden" name="IDrequest" id="IDrequest" class="form-control input-lg" placeholder="" value="<?php echo $result4['requestID']; ?>" tabindex="13"><br>
<a href="viewrequests.php">Back</a><br>
</form></div></div></div></div>
<?php
}
//include header template
require('layout/footer.php');
?>
解决方案
基于您的完整代码的新答案:
- 你应该解码
$_GET['requestedby']
withurldecode()
因为它的 url 编码。这将 ie%20
变成空格字符。 %C2%A0
不是空格字符,而是不间断空格(如
在 html 中),因此您无法使用urldecode()
. 您必须使用 str_replace() 函数将其更改为空格字符。
$requestedby = urldecode(str_replace(['%C2%A0','=C2=A0', ' '], '%20', $_GET['requestedby']));
list($requestedname, $requestedlast_name) = explode(' ', $requestedby);
这首先用正常的编码空间替换所有非破坏空间,然后对其进行解码。
[旧答案:]
因为您在explode 中使用的是字符串而不是var:
explode(' ', "$requestedby");
尝试这个:explode(' ', $requestedby);
推荐阅读
- php - PHP时间没有正确转换/保存
- java - 正在运行 .jar 文件,但 .exe 文件显示错误“此应用程序需要 Java 运行时环境 1.8(64 位)”
- tensorflow - Tensorflow 2.0 - 大数据集的 tf.estimator.DNNClassifier 训练
- android - 迁移到 Here SDK v3.15 后面临“WorkManager 未正确初始化”
- php - 在 PHP 中的 HTML 中的 PHP
- c# - Fluent API 一对多映射,没有导航属性
- android - 来自签名证书、上传证书和调试证书的 SHA1 指纹(Firebase)
- ecmascript-6 - ECMAScript 符号语法的含义?
- linux - 连续扫描目录并执行操作
- macos - Python 安装 / Mac / Homebrew Python VSCode 版本