我想从下面的字符串中获取 thisisafirstname 并将其放入另一个表中。以下是MySQL中字符串的样式:
{\"label\":\"Name\",\"value\":\"thisisafirstname\",\"identifier\":\"field3\",\"type\":\"oneLineText\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"50%\"},
这就是我所做的:
Function.php //工作正常
function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
Main.php //这是我遇到问题的地方
//Get Data
$sql = "SELECT content FROM wp_formcraft_3_submissions";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
//Output data of each row
while($row = mysqli_fetch_assoc($result)) {
$row1 = $row["content"];
//Get INFO in between
require_once('function.php');
$parsed = get_string_between($row1, '{\"label\":\"Name\",\"value\":\"', '\",\"identifier\":\"field3');
echo $parsed;
错误讯息:
Notice: Undefined variable: row2 in C:\Users\Admin\Desktop\connect\test.php on line 25
我认为问题是由特殊字符引起的。我用一个简单的电子邮件字符串测试了一次,它的工作正常,因为我得到了 gmail 。这是代码:
require_once('function.php');
$parsed = get_string_between($row1, "@", ".");
echo $parsed;
答案 0 :(得分:1)
第25行有语法错误,您缺少分号。它应该是:
$parsed = get_string_between($row1, '{\"label\":\"Name\",\"value\":\"', '\",\"identifier\":\"field3');
解释器期望词法元素;
继续进行任何分配。它遇到没有分号的元素是你的echo
命令,它会抛出你收到的错误。
答案 1 :(得分:1)
你错过了一个分号:
<强> Main.php 强>
//Get Data
$sql = "SELECT content FROM wp_formcraft_3_submissions";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
//Output data of each row
while($row = mysqli_fetch_assoc($result)) {
$row1 = $row["content"];
//Get INFO in between
require_once('function.php');
$parsed = get_string_between($row1, '{\"label\":\"Name\",\"value\":\"', '\",\"identifier\":\"field3');
echo $parsed;
答案 2 :(得分:0)
您最好的选择是反序列化数据,然后您可以轻松访问所需的数据。它看起来像JSON,但它不是一个完整的JSON字符串。数据还有更多内容吗?如果是JSON,请使用json_decode
对其进行解析并将其转换为数组或对象。