Подскажите код для перемешки слов через запятую

Да хотя бы потому, что словосочетание в конце оригинальной строки - без запятой. Когда его сунуть в середину - уже получится бяка. Как по мне, то я бы вообще разбил регой оригинальную строку, убрав все запятые(с пробелами после них), перемешал и експлодил с маской ', '(запятая и пробел).
 
а true/false(BOOLEAN тобишь)

смотря с какой стороны посмотреть )))

PHP:
if (1==true){
echo 'ravno';
}else echo 'neravno';

с точки зрения математики true и 1 равны, это в php ньюансы есть
 
  • Заблокирован
  • #13
Извините, уважаемый админ, но по-моему вы не правы. Вставьте код в PHPDesigner и запустите - всё работает. По-крайней мере по примеру, указанному в первом посте. А вообще рабочий, конечный код должен выглядеть вот так
PHP:
<?php
$in = $_POST["text"];
if(!$in){
?>
 
<!DOCTYPE HTML>
<head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="Extalionez" />
 
    <title>Рандомизатор</title>
</head>
 
<body>
 
<form method='post'>
<input type='text' name='text' value='' >
<input type='submit' value='get' name='submit'>
</form>
 
</body>
</html><?php
    }else{
$out = explode(', ', $in);
shuffle($out);
$out = implode(', ', $out);
echo $out;
    }
?>
 
Согласен, но тем не менее, я бы его все ровно сделал как-то так:
HTML:
<!DOCTYPE html>
<?php
$words = '';
$result = '';
if ($_POST['words'] != false) {
    preg_match_all('/([^\,]+?)\s*(\,\s*|\Z)/', (string)$_POST['words'], $matches);
   
    $result = $matches[1];
    shuffle ($result);
   
    $result = implode (', ', $result);
    $words = $_POST['words'];
}
?>
<html>
    <head>
        <title>Some Test</title>
    </head>
    <body>
        <form method="post" action="/index.php">
            <p>Words:</p>
            <textarea name="words" rows="3"><?=$words;?></textarea>
            <input type="submit" value="Go!" />
        </form>
        <?if ($result) {?>
        <p>Mixed Words:</p>
        <p><?=$result;?></p>
        <?}?>
    </body>
</html>
Кроме того, выводить данные после закрытого тега body, а тем более html - крайне не валидно.
 
  • Заблокирован
  • #15
Простите, но то ли я ничего уже не соображаю после стольких алкоголя, то ли вы немного опять неправы. Никто данные после закрытого тега не собирался выводить. когда они выводятся там об html даже речи не идёт. выводится в просмотре кода лишь сама строка, которая нужна пользователю там даже намёка на html нет. простите если я не прав!
Да и вообще ваш код какой-то слишком навороченный для такой простой задачи
 
Так и есть, мой недочет.
 
  • Заблокирован
  • #17
сорь, может у меня что не так, но у меня он вернул меня на мой сайт. похоже файл должен обязательно называться index.php, а так вполне рабочий скрипт!!! Даже чем-то лучше моего:)
 
В форме
Код:
action="/index.php"
прописан "деревяно". Заменить либо на файл, который отображает страницу, либо вообще убрать к чертям. Тогда будет отправлять на ту же страницу. Извините, привычка.
 
Несколько слов о регулярке:
([^\,]+?)\s*(\,\s*|\Z)

([^\,]+?) - выбираем все знаки, которые не являются запятой;
\s* - на тот случай, если после последнего слова в словосочетании случайно попался пробел(один или больше);
\, - собственно, сама запятая, как разделитель;
\s* - пробел(ы) после запятой;
|\Z - на тот случай, если это конец строки.

Собственно, все преимущество - это абсолютный пофигизм к пробелам в начале и конце словосочетания. Мелочь, но намного удобнее, когда приходится копипастить. Позволит не обращать внимание на всякую ерунду.
 
  • Заблокирован
  • #20
с точки зрения математики true и 1 равны, это в php ньюансы есть
Вы бы ещё в с++ TRUE и 1 сравнили:D
Сорь за оффтоп, но не мог сдержаться!
Извините, привычка.
Нашли за что извиняться:ah: .
А вообще повторюсь - Ваш код значительно лучше моего.
 
Назад
Сверху