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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярка выдаёт ошибку, на что ругается? 
:(
    Опции темы
darkness
Дата 5.8.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Решил поработать тут с определением ссылок:

вот что получилось:

Код

$href="http://www.net.ru";
$text="хостинг-провайдер";
 
$string="<a href=http://www.net.ru>хостинг-провайдер</a></tr><tr valign= bgcolor=#f0f0f0>";
 
 if (preg_match_all ('<a +(:?href=('.preg_quote($href).'))+ +>('.preg_quote($text).')+</a>', $string, PREG_PATTERN_ORDER))
  {echo"Соответсвия найдены";}
else
  {echo"ничего не найдено";}


А мне в ответ:

Fatal error: Only variables can be passed by reference 

Где закралась трабла?
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Wolf1994
Дата 5.8.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



По данной ошибке: на месте PREG_PATTERN_ORDER должна быть переменная для сброса в неё массива совпадений, типа: $out.
PM MAIL WWW   Вверх
darkness
Дата 5.8.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Wolf1994, ок - СПАСИБО,

а что можешь сказать по поводу регулярки...
теперь он не может распознать какую-то из скобок

Warning: preg_match_all(): Unknown modifier '(' 



З.Ы.: кстати регулярка схожа с http://forum.vingrad.ru/index.php?showtopic=103490&hl=

--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Wolf1994
Дата 5.8.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



Наиболее простое решение для данного случая:
Код

$href="http://www.net.ru";
$text="õîñòèíã-ïðîâàéäåð";

$str="<a href=http://www.net.ru>õîñòèíã-ïðîâàéäåð</a></tr><tr valign= bgcolor=#f0f0f0>";

preg_match ('!\<a href=("|)'.preg_quote ($href).'("|).*\>'.preg_quote ($text).'\<\/a\>!sUi', $str, $out);
if ($out [0])
  echo"Ñîîòâåòñâèÿ íàéäåíû";
else
 echo"íè÷åãî íå íàéäåíî";

PM MAIL WWW   Вверх
darkness
Дата 6.8.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Wolf1994, понятно.
 В твоём выражении я не знаком лишь с модификатором U
и ещё "!" - как я понял,  означает начало/конец регулярки?


Это сообщение отредактировал(а) darkness - 6.8.2006, 11:13
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
Wolf1994
Дата 6.8.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

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



"U" - инвертатор "жадности":
Цитата

U (PCRE_UNGREEDY)
Этот модификатор инвертирует жадность квантификаторов, таким образом они по умолчанию не жадные. Но становятся жадными, если за ними следует символ '?'. Такая возможность не совместима с Perl. Модификатор U также может использоваться внутри шаблона, при помощи '?U' записи. 

То есть, если есть выражение:
begin end end
и захватчик:
begin - end
то по умолчанию произойдёт полный захват:
begin end end
а с инвертатором - до первого совпадения:
begin end

http://ru.php.net/manual/ru/reference.pcre...n.modifiers.php
http://ru.php.net/manual/ru/reference.pcre...tern.syntax.php

Цитата

и ещё "!" - как я понял,  означает начало/конец регулярки?

Да.
PM MAIL WWW   Вверх
DENNN
Дата 6.8.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(darkness @  5.8.2006,  12:31 Найти цитируемый пост)
Fatal error: Only variables can be passed by reference 

Мне кажется, ему не нравится, что срока собирается при вызове йункции. Попробуй так
Код

$reg_expr='<a +(:?href=('.preg_quote($href).'))+ +>('.preg_quote($text).')+</a>';
if (preg_match_all ($reg_expr, $string, .....

PM ICQ   Вверх
Mal Hack
Дата 6.8.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



А зачем тут _all? если есть однот совпрадение то уже замечательно. Так что preg_match
И потом, зачем тут вообще регулярка, когда через strstr или strpos намного быстрее будет.
PM ICQ   Вверх
darkness
Дата 6.8.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(DENNN @ 6.8.2006,  13:49)
Мне кажется, ему не нравится, что срока собирается при вызове йункции. Попробуй так
Код

$reg_expr='<a +(:?href=('.preg_quote($href).'))+ +>('.preg_quote($text).')+</a>';
if (preg_match_all ($reg_expr, $string, .....

Думаю не в этом была проблема, поставил обратные слэши перед >\\ и им подобным - ругаться перестал.....


Mal Hack, сравнение строк я могу smile , а вот с регулярками затрудняюсь, поэтому и выбрал их, а  Wolf1994 вообще Респект smile 

Это сообщение отредактировал(а) darkness - 6.8.2006, 18:42
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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