продолжение: невозможно опубликовать поля на следующей странице в php и HTML - PullRequest
0 голосов
/ 16 ноября 2009

Итак, у меня есть поля, которые динамически генерируются на другой странице, и затем их результаты должны быть размещены на странице story.php. поля будут: *noun1 *noun2 *noun3 и история будет: кто-то делает * существительное1 и т. д. Я хочу заменить *noun1 в истории на *noun, который я разместил на предыдущей странице (У меня *noun1 опубликовано с предыдущей страницы), но код ниже не работает:

$fields = $_POST['fields'];
$story = $_POST['story'];
$fieldsArray = split(' ', $fields);
for ($i = 0; $i < count($fieldsArray); $i++) {
    ${$fieldsArray[$i]} = $_POST[$fieldsArray[$i]];
}

// replace words in story with input
for ($i = 0; $i < count($story); $i++) {
    $thisWord = $story[$i];
    if ($thisWord[0] == '*')
        $story[$i] = ${$thisWord.substring(1)};
}
$tokensArray = split(' ',$tokens);

echo $story;

Ответы [ 2 ]

1 голос
/ 16 ноября 2009

Вероятно, ваша проблема в том, что вы пытаетесь повторить $ story, которую я собираю в виде массива. Возможно, вам повезет больше:

$storyString = '';
for ($i = 0; $i < count($story); $i++)
{
    $storyString .= $story[i] . ' ';
}

echo $storyString;

echo не может распечатать массив, но вы можете отобразить строки в соответствии с вашим сердцем.

0 голосов
/ 16 ноября 2009

Вы почти наверняка не хотите переменные (например, ${$fieldsArray[$i]}). Кроме того, $thisWord.substring(1) выглядит так, как будто вы пытаетесь вызвать метод, но это не то, что он делает; . для конкатенации строк. В PHP строки не являются объектами. Используйте функцию substr, чтобы получить подстроку.

preg_replace_callback может заменить весь ваш код, но его использование функций более высокого порядка может оказаться слишком сложным, чтобы в него прямо сейчас проникнуть. Например,

function sequence($arr) {
    return function() {
      static $i=0
      $val = $arr[$i++];
      $i %= count($arr);
      return $val;
    }
}
echo preg_replace_callback('/\*\w+/', sequence(array('Dog', 'man')), "*Man bites *dog.");

будет производить "Собака кусает человека". Для примера кода требуется PHP 5.3 для анонимных функций .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...