请参考下面的代码。

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


$ dArr获得了自愿者价值。 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时,将打印数字。

最佳答案

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

您会看到“正确”的输出,这是因为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());
        }
    }
?>


当然,您需要将页面名称,表名称和字段名称更改为实际值。

关于php - PHP preg_split无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9718843/

10-11 23:27
查看更多