Здравствуйте. С PHP работаю впервые(легкий, интересный язык однако) но вот запнулся на регулярках: Есть текст вида: "http://supersait.ru/lalalla =чтотонаписано" нужно вытащить в $a ссылку, а в $b "чтотонаписано". Делаю так: Code: $url = fgets ($file, 1024); $template = "/=(\w*)\n/"; $result = preg_match($template, $url, $maches); echo "$maches[1]<br>"; однако выводит пустой лист Как подправить?
Он у тебя в соответствие затягивает всю строку в $maches[0], а $maches[1] пустой. надо типа "/http:\/\/(supersait.ru\/lalalla=){1}(.*){1}/" , и потом \1 равно http://supersait.ru/lalalla = а \2 равно чтотонаписано. Либо /^=(.+)$/ P.S.:http://pyha.ru/forum/topic/19.0
$url = "http://supersait.ru/lalalla=чтотонаписано"; $template = "#=(.*)#"; $result = preg_match($template, $url, $maches); echo "$maches[1]<br>"; альтернатива) $url = "http://supersait.ru/lalalla=чтотонаписано"; $result = explode("=", $url); echo $result[1];
хорошо спасибо, воспользовался методом Winston. Возник еще один вопрос: есть текстовый файл на серве text.txt в нем много строк вида sait.ru=lalala ololo.ru=uidsd tratata.ru=super и т.д. Как Мне допустим в строке ololo.ru=uidsd заменить значение uidsd на свое? Еще нужно учитывать что может быть написано просто ololo.ru и тогда нужно приписать =uidsd. Если открывать через Code: $file=fopen("file.txt", "a") то добавляется в конец, а Мне нужно исправить в определенной строке. Через Code: $file=fopen("file.txt", "w") чтото совсем не получается Подскажите пожалуйста, очень прошу
mixed preg_replace ( mixed $patt ern, mixed $replacement, mixed $ subject [, int $limit] ) Выполняет поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement. В случае, если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона. $replacement может содержать ссылки на подмаски шаблона. Таким образом, можно поменять в строке местами части, соответствующие двум разным подмаскам.
Compton спасибо, хорошая функция. Но почему то когда Я записываю так: Code: $f = 'http://adres.com'; file_put_contents('urls.txt',preg_replace('/$f=.+/',"$f.=Супермен",file_get_contents('urls.txt'))."\r\n"); не работает Почему? И как можно учесть, и как быть если в слове нет знака равно?
1) При поставлении адреса знаки "//" будут считаться ограничителями выражения 2)подставлять так - Code: '/'.$f.'=.+/'
PHP: $url = fgets ($file, 1024); $template = "|=(\w+)\n|"; $result = preg_match_all($template, $url, $maches); foreach($matches[0] as $tmp) { echo trim($tmp)."\r\n"; }