Квантификатор жадности срабатывает на первое вхождение.... Вхождение будет <input type="hidden" name="inviter" value=""><input type="hidden" name="token" value="67f21d69aa231" /> если ограничить конструкцией [^>]*, то оно будет считывать до первой попавшейся скобочки ">"
смотрите мне надо чтобы парсер проверял типо так Code: <a href="любой текст" любой текст(типо alt="" title="")>Любой текст</a> или <a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст" height="33" width="88" любой текст></a> Эта регулярка роботает как-то не так: PHP: #(<a href=".*" alt=".*">.*</a>)|<a href=".*" alt=".*"><img scr=".*" alt=".*" \/></a>#
у меня скрипт какой контролирует баннерные места и надо чтобы он проверял что юзер ввел на место там где должен быть баннер (форма с полем код) Нужно проверять
PHP: <?php $string = '<a href="любой текст" alt="111" title="222">Любой текст</a>'; $regexp = '/<a href="([^"]*)"[^>]*>.*<\/a>/is'; preg_match_all($regexp, $string, $match); if (strlen($match[1][0]) > 0) { echo('Правильно "' . $match[1][0] . '"<br>'); } echo('<hr>'); unset($match); $string = '<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст картинки" height="33" width="88" любой текст></a>'; $regexp = '/<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>/is'; preg_match_all($regexp, $string, $match); if (strlen($match[1][0]) > 0) { echo('Правильно "' . $match[1][0] . '"<br>'); } ?> Вот мини код, который проверяет шаблон <a> и <a> + <img> и при наличии ссылок - говорит, что всё хорошо
я делал так но постоянно пишет что ошибка Code: $regexp = '/<a href="([^"]*)"[^>]*>.*<\/a>/is'; if(!preg_match($regexp, $_POST['code'])) { die("Вы не правильно ввели код баннера или ссылки"); } $regexp = '/<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>/is'; if(!preg_match($regexp, $_POST['code'])) { die("Вы не правильно ввели код баннера или ссылки"); }
Пример вставляемой строки из $_POST в студию PHP: <?php $string = '<a href="любой текст">Любой текст</a>'; //$string = '<a href="любой текст" любой текст(типо alt="" title="")><img src="любой текст картинки" height="33" width="88" любой текст></a>'; $regexp = '/(<a href="([^"]*)"[^>]*>.*<\/a>|<a href="[^"]*"[^>]*><img src="([^"]*)"[^>]*><\/a>)/is'; if(!preg_match($regexp, $string)) { die("Вы не правильно ввели код баннера или ссылки"); } else { die("Правильно"); } ?> Всё прекрасно работает
Ну если у тебя так в твоём посте, то получается что если ввели первый неправильно, то второй не проверяется из-за die() Постом выше я объединил 2 в 1, попробуй его
смотри, есть форма POST и я нажимаю Сабмит и проверяю данные сначало, на empty() потом на strlen() и птом на регулярку и оно пишет Вы не правильно ввели код баннера или ссылки
Честно, я не знаю почему у тебя не работает. Вот вместе c HTML мой вариант - показывает результат 2х выборок. PHP: <form id="form1" name="form1" method="post" action="?"> <input id="code" name="code" type="text" size="100" value='<a href="/home/1234njj757hjvd.jpg">Я ссылко</a>'> <input name="Submit" type="submit" value="button"> </form> <?php //$string = '<a href="любой текст">Любой текст</a>'; //$string = '<a href="любой текст" любой текст(типо alt="" title="")><img 7890src="любой текст картинки" height="33" width="88" любой текст></a>'; if (strlen($_POST['code']) > 0 ) { $regexp1 = '/<a href="[^"]*"[^>]*>.*<\/a>/is'; $regexp2 = '/<a href="[^"]*"[^>]*><img src="[^"]*"[^>]*><\/a>/is'; if(!preg_match($regexp1, $_POST['code'])) { echo("1 : Вы не правильно ввели код баннера или ссылки"); } else { echo("1 : Правильно"); } echo('<br>'); if(!preg_match($regexp2, $_POST['code'])) { echo("2 : Вы не правильно ввели код баннера или ссылки"); } else { echo("2 : Правильно"); } } ?> Может у тебя предидущая проверка останавливает? или не с того контрола считываешь?
смотри у меня есть форма и почему то когда я echo вывожу то выводит Code: <a href=\"/home/1234njj757hjvd.jpg\">Я ссылко</a> тоисть надо сделать парсер чтобы он поддерживал \"\"