Следующий код, кажется, работает.
В html я заменяю это:
xhr.onload = function() {
window.location.replace("http://MyPage.php");
};
на это:
xhr.onload = function() {
if (xhr.readyState == 4 && xhr.status==200) {
window.location.replace(xhr.responseText);
}
};
И в signin.php
if ($Test==true) {
echo "http://www.example.com/TheGoodPage.html";
}
else {
echo "http://www.example.com/TheUnAuthorizedPage.html";
}
Регулярные выражения ничего не "делают". Они только соответствуют тексту.
То, что Вы хотите, является некоторыми инструментами, который использует регулярные выражения, чтобы определить строку и затем применить некоторую команду к тем инструментам.
Такие инструменты sed
(существует также awk
и многие другие). Вы использовали бы его как это:
sed -e "/^::/d" < input.txt > output.txt
Часть"/^::/
"говорит sed
для применения следующей команды ко всем строкам, которые запускаются с "::" и"d
"просто означает, "удаляют ту строку".
Или простое решение (который мой мозг не произвел по некоторой странной причине):
grep -v "^::" input.txt > output.txt
^::.*[\r\n]*
При чтении файла линию за линией, Вам не будет нужно [\r\n]*
часть.
Если у Вас нет sed или grep, найдите это и замену пустой строкой:
^::.*[\r\n]
Вот мой вклад в C#:
Текстовый поток:
string stream = :: This is a comment line
Синтаксис:
Regex commentsExp = new Regex("^::.*", RegexOptions.Singleline);
Использование:
Console.WriteLine(commentsExp.Replace(stream, string.Empty));
С другой стороны, если я хотел просто взять текстовый файл, который включал комментарии, и произведите точный дубликат без строк комментария, я мог использовать простую, но эффективную комбинацию типа и findstr инструментов командной строки:
type commented.txt | findstr /v /R "^::" > uncommented.txt
Спасибо за указатели:
Следующая вещь работала на меня. После "::" любой символ возможно присутствовал в текстовом файле, таким образом, я дал:
^:: [a-zA-Z0-9 я поместил все символы пунктуации здесь] * $
- AD