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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярные выражения, вытащить ссылку 
:(
    Опции темы
AlDev
Дата 25.5.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

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



люди, помогите плиз написать регулярки для вытаскивания адреса и текста ссылки из строки...
например из 
Код

$str = "<a href=\"bla\">blabla</a>";

получить переменные:
Код

$linkUrl = 'bla';
$linkName = 'blabla';

PS: ссылка встречается один раз, но как слева так и справа от нее может быть что угодно
PPS: как я понимаю, присвоить значения переменным можно через eval, так? 
PM MAIL WWW ICQ YIM MSN   Вверх
Mal Hack
Дата 25.5.2006, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



PM ICQ   Вверх
AlDev
Дата 26.5.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

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



thanks
а имя ссылки? т.е. то, что между <a href... ></a>? 
PM MAIL WWW ICQ YIM MSN   Вверх
Mal Hack
Дата 26.5.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ТАм <a ...>(.+?)</a>
Поищи, было. 
PM ICQ   Вверх
smartov
Дата 26.5.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

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



Код

$s = '<P>sadfsdf</p><a href="myvermuchcoolurl?sdfsd=asd">Url text</a>ывафыва<span>asd</span>';

preg_match('/<a href=\"([^"]*)">([^<]*)<\/a>/', $s, $matches);
echo "<pre>";
print_r($matches);


Результат

Код

<pre>Array
(
    [0] => <a href="myvermuchcoolurl?sdfsd=asd">Url text</a>
    [1] => myvermuchcoolurl?sdfsd=asd
    [2] => Url text
)
  

Это сообщение отредактировал(а) smartov - 26.5.2006, 12:26
PM MAIL   Вверх
Валера
Дата 11.7.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня вопрос:
(Не совсем в тему(не про ссылку), но поиск выдал столько тем с таким названием, что я решл очередную не плодить)
Мне нужно найти 
Код
\"

в определенной переменной и заменить на 
Код
&quot;


Для этого я использую функцию eregi_replace но она ничего не меняет. Может я что то не так написал? (Ответа в своей настольной книге по PHP я не нашел) Помогите, товарищи!
Пример проблемы:
Код

$itog="<tr><td>рыба \"рыба\"</td><td>one. 445</td><td>col. 2</td><td>it. 890</td></tr>";
$itog=eregi_replace("\\\"", "&quot;", $itog);
 
PM   Вверх
BobiKK
Дата 12.7.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

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



А если по-простому, через str_replace? Это будет гораздо быстрее
Код

$itog="<tr><td>рыба \"рыба\"</td><td>one. 445</td><td>col. 2</td><td>it. 890</td></tr>";
$itog = str_replace("\"", "&quot;", $itog);
 
PM MAIL   Вверх
LOBsTerr
Дата 12.7.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.2.2006
Где: Ташкент

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



Я извиняюсь, но тоже еще одну тему плодить не стал...
Задача - Поступает строка содержащая любой количество цифр, например -1323123123123, надо отображать только первые 8 символов, остальные должны менятся на звездочки, то есть должно получиться 13231231*****.
То есть каждый символ последовавший после этих восьми должен быть заменен *. Кто знает помогите. 
PM MAIL WWW ICQ   Вверх
BobiKK
Дата 12.7.2006, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

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



Код

<?php
$str = "1323123123123";
$len = strlen($str);
if ($len >= 8)
    $str = substr($str, 0, 8);
for ($i = $len; $i > 8; $i--)
    $str .= "*";
echo $str;
?>

Проверь, может я там что напортачил 
PM MAIL   Вверх
ZlojEzh
Дата 12.7.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



что-то вроде этого:
Код

$res_str = substr($src_str,0,8).str_repeat('*',max(strlen($src_str)-8,0));
 
PM MAIL ICQ   Вверх
izvrat
Дата 12.7.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

- гонево полнешее! тут проскакивает много ваирантов - если во ссылке вложеные теки, есл иесть еще атрибуты....

 я бызделал так

/<a(\s[^>]*)?\shref\s*=\s*([\'"]([^\'"]*)|([^\'"\s]*))(\s[^>]*)?>(.*)<\/a\s*>/i

где href = $3$4
text = $6

ясно? 
PM MAIL   Вверх
LOBsTerr
Дата 12.7.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 22.2.2006
Где: Ташкент

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



Спасибо BobiKK
Но я хотел с помощью регулярок )) 
Вот нашел ответ
Код

<?php echo preg_replace('/(?<=\d{8})\d/', '*', '123123123123213123');?>
 

Это сообщение отредактировал(а) LOBsTerr - 12.7.2006, 10:02
PM MAIL WWW ICQ   Вверх
Валера
Дата 16.7.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



BobiKK
Цитата

А если по-простому, через str_replace? 

В принципе помогает, но у меня не всегда именно такие параметры замены. То есть, например сейчас мне надо найти один или больше подряд идущих слешей и одну кавычку, а у меня Регулярные выражения ничего не заменяют. Подскажите, может я неправильно составил шаблон?
Код

$spec="\\\\\" Столичная \\\" \\\\\"Водяра\\\"";
$spec=ereg_replace("\\+\"", "&quot", $spec);
echo $spec;

Еще я попробовал так:
Код

$spec=ereg_replace("(\\)+\"", "&quot", $spec);

Но он выдает ошибку - Warning: ereg_replace(): REG_EPAREN in x:\home\test1.ru\www\php\update.php on line 12 
 
PM   Вверх
Wolf1994
Дата 16.7.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



4Валера:
Код

<?php
$spec='\\\\\" Ñòîëè÷íàÿ \\\" \\\\\"Âîäÿðà\\\" \\" ';
print htmlspecialchars (preg_replace ('/[\\\]+\"/', "&quot;", $spec));
?>
  
PM MAIL WWW   Вверх
Валера
Дата 17.7.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо большое! Правда 
Код

print htmlspecialchars (preg_replace ('/[\\\]+\"/', "&quot;", $spec));

Выдавал довольно странный результат, а вот 
Код

preg_replace ('/[\\\]+\"/', "&quot;", $spec);

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


 




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


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

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