Перенаправление заголовка PHP, не работающее

Необходимо использовать предвидение, как некоторые из других респондентов сказали, но предвидение должно составлять другие символы между своим выходным словом и текущим положением соответствия. Например:

(?=.*word1)(?=.*word2)(?=.*word3)

.* в первом предвидении позволяет ему соответствовать однако многим символам, в которых требуется к тому, прежде чем это доберется до "word1". Тогда положение соответствия сбрасывается, и второе предвидение ищет "word2". Сброс снова и заключительная часть соответствуют "word3"; так как это - последнее слово, на которое Вы проверяете, не необходимо, чтобы это было в предвидении, но это не причиняет боль.

для соответствия целому абзацу, необходимо привязать regex в обоих концах и добавить финал .* для потребления оставшихся символов. Используя нотацию стиля Perl, которая была бы:

/^(?=.*word1)(?=.*word2)(?=.*word3).*$/m

'm' модификатор для multline режима; это позволяет ^, и $ соответствие на границах абзаца ("границы строки" в regex-говорят). Важно в этом случае, чтобы Вы не использовали' модификатор, который позволяет точечному метасимволу соответствовать новым строкам, а также всем другим символам.

Наконец, Вы хотите удостовериться, что Вы распознаете целые слова и не только фрагменты более длительных слов, таким образом, необходимо добавить границы слова:

/^(?=.*\bword1\b)(?=.*\bword2\b)(?=.*\bword3\b).*$/m
10
задан JasonDavis 6 August 2009 в 23:18
поделиться

5 ответов

Попробуйте:

error_reporting(E_ALL | E_WARNING | E_NOTICE);
ini_set('display_errors', TRUE);


flush();
header("Location: http://www.website.com/");
die('should have redirected by now');

Посмотрите, что вы получите. Вы не должны использовать ^ (xor) в вызове error_reporting (), потому что вы непреднамеренно запрашиваете все ошибки, ЗА ИСКЛЮЧЕНИЕМ уведомлений и предупреждений ... что и есть ошибка «заголовки уже отправлены».

Изменить:

Также попробуйте поместить flush () прямо над вызовом header ().

21
ответ дан 3 December 2019 в 13:19
поделиться

Также, когда вы используете функцию заголовка, она должна быть первым, что вызывается до того, как любой текст (даже пробел) будет записан клиенту, поэтому еще раз проверьте, нет ли выводимых пробелов до вашего звонка даже до th

<?php
1
ответ дан 3 December 2019 в 13:19
поделиться

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

header("Location: http://www.website.com/");
exit();

превращается в

header("Location:http://www.website.com/");
exit();

У меня была эта проблема на моем сервере WAMP.

Хотя это не должно быть проблемой, учитывая то, как это описано в документации PHP. Но вам, вероятно, все равно стоит попробовать. Я знаю, что это сработало для меня в ряде случаев.

14
ответ дан 3 December 2019 в 13:19
поделиться

Что именно происходит, когда вы посещаете страницу? Вы можете попробовать Firebug или любой другой инструмент, который позволяет анализировать заголовки HTTP и проверять, действительно ли происходит перенаправление и присутствует ли действительно заголовок Location .

0
ответ дан 3 December 2019 в 13:19
поделиться

Вам также следует убедиться, что вы выполняете перенаправление в допустимое местоположение, и что для этого местоположения установлены правильные сообщения об ошибках 404 и 500 / страницы. Возможно, вы просто перенаправляете плохое место.

0
ответ дан 3 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: