【问题标题】:PHP preg_split Not WorkingPHP preg_split 不工作
【发布时间】:2012-03-15 11:34:19
【问题描述】:

请参考下面的代码。

$dArr = '<script>document.write(volunteerDist);</script>';

$dArr 获取志愿者Dist 的值。 echo $dArr 打印值 4.1,9.4,2.3,4.7,9.1,14.7,3.2,7.1,4.1,0.5

我想将其拆分为数组中的元素,所以我使用了:

$dArr = preg_split("/,/", $dArr);

但是 $dArr 是一个只有一个元素的数组,它是所有值..意味着没有发生 preg_split。我也试过了

$temp=explode(",", $dArr);

但还是不行。

我尝试粘贴值(即上面的数字)并直接 preg_split

$temp=explode(",", '4.1,9.4,2.3,4.7,9.1,14.7,3.2,7.1,4.1,0.5');

它成功了。怎么了?请注意,当我回显 $dArr 时,会打印数字。

【问题讨论】:

  • 首先,如果您只是在, 上进行拆分,则无论如何都应该使用explode()preg_split() 的性能损失可以忽略不计,但如果您这样做是任何形式的迭代,您不妨受益于 explode() 的简洁性和速度。
  • 对我来说很好codepad.org/ooeOHHz4
  • 不,echo $dArr 打印
  • 我很确定你的第一行会失败......=右边的代码是在前端执行的......你检查过$dArr不为空吗? ??
  • 您是否希望 JavaScript 代码在 PHP 执行时运行以便您获得数字?

标签: php javascript preg-split


【解决方案1】:

您在这里混合了服务器端和客户端代码和逻辑。

您会看到“正确”的输出,因为 document.write 方法将输出写入浏览器。

您不能直接与服务器端代码中的客户端变量进行交互。

您必须使用 AJAX 将客户端值发送到服务器,或者在客户端对其进行解析:

<script type="text/javascript">
var dArr = volunteerDist.split(",");
for (var i = 0; i < dArr.length; i++)
   document.write(dArr[i] + "<br />");
</script>

编辑:虽然我不是 PHP 开发人员,但阅读其他一些帖子给了我足够的示例代码。

要将客户端 volunteerDist 变量的值发送到 PHP 并保存到数据库,首先在代码中包含 jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

现在在定义和创建变量后的某个地方有这个:

<script type="text/javascript">
$.ajax({
    type: "POST",
    url: "yourpagehere.php",
    data: "volunteerDist=" + volunteerDist,
    dataType: "html"
});
</script>

并读取此数据并添加到数据库:

<?php
    $volunteerDist = $_POST['volunteerDist'];
    if(isset($volunteerDist)) {
        $dArr = preg_split("/,/", $volunteerDist);
        foreach($dArr as $volunteer) {
            $sql = "INSERT INTO TableName (fieldname) VALUES ('".$volunteer."')";
            mysql_query($sql) or die(mysql_error());
        }
    }
?>

当然,你需要将页面名、表名和字段名更改为你的真实值。

【讨论】:

  • var_dump($dArr) returned string(47) "4.1,9.4,2.3,4.7,9.1,14.7,3.2,7.1,4.1,0.5" 所以这意味着 $dArr 已经得到了数据..我需要在 php 中使用它,因为我需要将它们插入到我的数据库中
  • 对。计算 &lt;script&gt;document.write(volunteerDist);&lt;/script&gt; 中的字符 = 正好 47。当发送到浏览器时,它将显示 客户端变量volunteerDist 中的值。将字符串更改为:$dArr = '&lt;script&gt;alert(volunteerDist);&lt;/script&gt;';,也许你会看到我一直想说的话。
  • 要将其插入数据库,您必须使用 AJAX。寻找 jQuery AJAX,这是最简单和友好的方式 - 包含 jQuery 基本库,然后只需一行,您就可以将值发送到您的 PHP 代码。
  • 好吧好吧..那么我怎样才能将这些值转移到我的 php 代码中以便插入到 mysql 中?
  • 就像我说的,jQuery AJAX 是最简单的方式。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 2018-05-02
  • 1970-01-01
相关资源
最近更新 更多