Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рег. выражения в многострочном режиме 
:(
    Опции темы
Black_leopard
Дата 12.9.2007, 04:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Здравствуйте. 
Я не могу найти в чем может быть ошибка в след. регулярном выражении.
У меня есть текст написанный в несколько строчек

Я зочу взять адрес куда эта ссылка указывает
Код

//специально в две строчки
$text = 'a href="ttt.html" onclick="..."
title="...">Название ссылки</a>';

preg_match("/(?m) \<a .* href=\"(.*)\" .*>.*?\<\/a\>/", $text, $match)
echo $match[1]; //ничего не выводит


В чем может быть проблема, если записать в одну строчку то все работает. А для нескольких строчек я перевел в многострочный режим ?m все равно не работает.

Заранее Спасибо!

Добавлено через 6 минут и 16 секунд
Понял, что написал не туда. Нужно было в PHP: Тексты, как перенести не знаю.

Это сообщение отредактировал(а) Black_leopard - 12.9.2007, 05:00
PM MAIL   Вверх
theworldcreator
Дата 12.9.2007, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Знак . который ты используешь как любой символ не включает в себя знак перехода на новую строку(\n) А рег выр у тебя не очень правильное. Скажи а ты писал его для какогото конктреного случае или чтоб он любой разобрать мог?
примерно так нужно чтоб работало в данном случае хотя выход с подстановкой знака \n не красив и не удобен
Код

/\<a.*href=\"([^\"]*)\".*\n.*>[^\<]*\<\/a\>/m


Добавлено через 1 минуту и 18 секунд
что делает m в конце не знаю, но все равно ставить его надо в конце а не в начале
PM MAIL WWW ICQ   Вверх
Black_leopard
Дата 12.9.2007, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Данный вариант тоже не отработал (ничего не нашел). Можно конечно сначала заменить \n на пробел а потом уже делать поиск, но это плохой вариант. 

Насчет m выражение (?m) служит для перевода поиска в многострочный режим и ставится в начале, почему он не отрабатывает даж не знаю как ответить. 

Писал я его для конкретного случая, но можно и на общем.

Код

$text = '<a href="ссылка"
>Название</a>';
preg_match('/(?m)\<a.*href="(.*)"\.*>.*?\<\/a\>/', $text, $match);
echo $match[1] //не выводит, но если убрать в $text разрыв то находит


Можно конечно поставить вариант \n? - типа есть или нет. Но мне интересен вариант в многострочном режиме.

Это сообщение отредактировал(а) Black_leopard - 12.9.2007, 09:44
PM MAIL   Вверх
teroni
Дата 12.9.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Код

<?php
$text = '<a href="ссылка"
>Название</a>';
preg_match('/<a\s+.*href\s*=\s*\"(.*)\".*>.*<\/a>/isU', $text, $match);
echo $match[1];
?>


Это сообщение отредактировал(а) teroni - 12.9.2007, 14:57
PM MAIL   Вверх
CyClon
Дата 12.9.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Читайте информацию по модификатору "s".


--------------------
user posted image
PM   Вверх
theworldcreator
Дата 13.9.2007, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 362
Регистрация: 25.8.2007
Где: Москва

Репутация: 10
Всего: 13



Классно. Возьму на вооружение. И все таки настаиваю - чтобы он воспринял только адрес ссылки, а не все от начала этого адреса и до </a>, надо делать так:
Код

\"([^\"]*)\"

а не 
Код

\"(.*)\"


Добавлено через 7 минут и 41 секунду
Все, проверил, заткнулся. Действительно работает!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.