$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
}
Иногда подавление запроса как @mysql_query(your query);
Вы можете использовать "<pre>(.*?)</pre>"
, (заменяя pre на любой текст, который вы хотите) и извлекаете первую группу (для более конкретных инструкций указывается язык), но это предполагает упрощенное представление о том, что у вас очень простой и допустимый HTML.
Как и другие комментаторы, если вы делаете что-то сложное, используйте парсер HTML.
Вы можете использовать Pattern pattern = Pattern.compile( "[^<'tagname'/>]" );
Вы не должны пытаться анализировать html с регулярными выражениями, см. этот вопрос и как это получилось.
В простейших терминах html не является обычным языком, поэтому вы невозможно полностью проанализировать с помощью регулярных выражений.
Сказав, что вы можете анализировать подмножества html, если вложенных тегов не существует. Итак, до тех пор, пока что-либо между и не является этим тегом, это будет работать:
preg_match("/<([\w]+)[^>]*>(.*?)<\/\1>/", $subject, $matches);
$matches = array ( [0] => full matched string [1] => tag name [2] => tag content )
. Лучше всего использовать синтаксический анализатор, например собственный DOMDocument, для загрузки вашего html, затем выберите свой тег и получить внутренний html, который может выглядеть примерно так:
$obj = new DOMDocument();
$obj -> load($html);
$obj -> getElementByTagName('el');
$value = $obj -> nodeValue();
И так как это правильный парсер, он сможет обрабатывать теги вложенности и т. д.
(?<=(<pre>))(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|`~]| )+?(?=(</pre>))
В основном, что он делает:
(?<=(<pre>))
Выбор должен быть добавлен с тегом <pre>
(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|~]| )
Это просто регулярное выражение, которое я хочу применить. В этом случае он выбирает символ буквы или цифры или символ новой строки или некоторые специальные символы, перечисленные в примере в квадратных скобках. Символ трубы |
просто означает «ИЛИ».
+?
Плюс символьные состояния для выбора одного или нескольких из вышеуказанного порядка не имеют значения. Вопросительный знак изменяет поведение по умолчанию от «жадного» до «неровного».
(?=(</pre>))
Выбор должен быть добавлен тегом <pre>
В зависимости от вашего варианта использования вам может потребоваться добавить некоторые модификаторы, такие как (i или m)
Здесь я выполнил этот поиск в Sublime Text, поэтому мне не пришлось использовать модификаторы в моем регулярном выражении.
Вышеприведенный пример должен отлично работать с такими языками, как PHP, Perl, Java ... Javascript, однако, не поддерживает lookbehind, поэтому мы должны забыть об использовании (?<=(<pre>))
и искать какое-то обходное решение. Возможно, просто нарисуйте первые четыре символа из нашего результата для каждого выбора, например, здесь Текст, соответствующий регулярному выражению между тегами
Также посмотрите на JAVASCRIPT REGEX DOCUMENTATION для не захватывающие круглые скобки
Для нескольких строк:
<htmltag>(.+)((\s)+(.+))+</htmltag>
Попробуйте это ....
(?<=\<any_tag\>)(\s*.*\s*)(?=\<\/any_tag\>)
Чтобы исключить теги разметки:
"(?<=<pre>)(.*?)(?=</pre>)"
Это, кажется, самое простое регулярное выражение всего, что я нашел
(?:<TAG>)([\s\S]*)(?:<\/TAG>)
(?:<TAG>)
из совпадений ([\s\S]*)
в совпадениях (?:<\/TAG>)
из совпадений
var str = "Lorem ipsum <pre>text 1</pre> Lorem ipsum <pre>text 2</pre>";
str.replace(/<pre>(.*?)<\/pre>/g, function(match, g1) { console.log(g1); });
Поскольку принятый ответ не содержит кода javascript, поэтому добавление:
используйте шаблон ниже, чтобы получить контент между элементами. Замените [тег] на фактический элемент, из которого вы хотите извлечь содержимое.
<[tag]>(.+?)</[tag]>
Иногда теги будут иметь атрибуты, такие как тэг anchor
, имеющий href
, а затем использовать шаблон ниже.
<[tag][^>]*>(.+?)</[tag]>
Я использую это решение:
preg_match_all( '/<((?!<)(.|\n))*?\>/si', $content, $new);
var_dump($new);
<pre>([\r\n\s]*(?!<\w+.*[\/]*>).*[\r\n\s]*|\s*[\r\n\s]*)<code\s+(?:class="(\w+|\w+\s*.+)")>(((?!<\/code>)[\s\S])*)<\/code>[\r\n\s]*((?!<\w+.*[\/]*>).*|\s*)[\r\n\s]*<\/pre>
Тег может быть завершен в другой строке. Вот почему \n
необходимо добавить.
<PRE>(.|\n)*?<\/PRE>