PHP preg_split не работает - PullRequest
1 голос
/ 15 марта 2012

Пожалуйста, обратитесь к приведенному ниже коду.

$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);

, но все равно не сработало.

Я попытался вставить значение (т. Е. Числа, указанные выше) и предварительно его разделить

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

это было успешно.Что случилось?ОБРАТИТЕ ВНИМАНИЕ, что когда я отображаю $ dArr, числа печатаются.

1 Ответ

5 голосов
/ 15 марта 2012

Здесь вы смешиваете код и логику на стороне сервера и на стороне клиента.

Вы видите «правильный» вывод из-за метода 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());
        }
    }
?>

Конечно, вам нужно изменить имя страницы, имя таблицы и имя поля на ваши реальные значения.

...