Нужна помощь с регулярным выражением

Статус
В этой теме нельзя размещать новые ответы.

monz

Создатель
Регистрация
24 Авг 2009
Сообщения
37
Реакции
0
Нужно на php с помощью регулярного выражения найти такой адрес:

Ввожу так:
Все что идет до &secret - работает, как только доходит до слова secret регулярка ничего не находит, какое-то заколдованное слово)
Помогите расколдовать пожалуйста :)
 
В твоем примере все работает

Код:
<?

$text = "http://example.com/docs/confirm.phtml?login=mister8732&secret=hlKUXY ";

preg_match('#http://example.com/docs/confirm.phtml\?login=([a-z0-9]{5,})&secret=([a-zA-Z0-9]*)#i', $text, $out);

print_r($out);  
?>

Код:
Array
(
    [0] => http://example.com/docs/confirm.phtml?login=mister8732&secret=hlKUXY
    [1] => mister8732
    [2] => hlKUXY
)

Приведи кусок кода, который использует дальше $url
 
Приведи кусок кода, который использует дальше $url
После последнего символа 'Y' идет скорей всего перевод строки.
Но я не пойму, когда я ввожу выражение вида:
PHP:
preg_match('#http://example.com/docs/confirm.phtml\?login=([a-z0-9]{5,})&secret=#i', $result, $url);
у меня ничего не находит вообще.
 
  • Заблокирован
  • #4
После последнего символа 'Y' идет скорей всего перевод строки.
Можно например сделать так:
PHP:
<?
$text = "http://example.com/docs/confirm.phtml?login=mister8732&secret=hlKUXY ";
$text=trim($text);
?>
Т.е. использовать функцию trim() для удаления пробелов и первододов строк по краям. А затем уже применить регулярное выражение.
Не знаю может извращение :D
 
Код:
preg_match('#http://example.com/docs/confirm.phtml\?login=([a-z0-9]{5,})&secret=([a-zA-Z0-9]*?)\s*#is', $result, $url);
 
Приведи кусок кода, который использует дальше $url
Всё, спасибо, вопрос решен! Посмотрел, после url как и стоило ожидать стояли ".
Сработал такой вариант:
PHP:
preg_match('#(http://example.com/docs/confirm.phtml\?login=(.*))"#U', $result, $url);
Элемент массива $url[1] как раз то, что было нужно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху