вопрос о регулярных выражениях

crond

Новичок
вопрос о регулярных выражениях

Народ, никто не поделится функцией преобразования html тегов <img> и <a> в bbcode. Проблема в том, что url в тегах иногда обрамлен кавычками, а иногда нет
Нужно получить [ img ]http://www.yandex.ru/img/test.gif[ /img ] из
<img src=http://www.yandex.ru/img/test.gif align="left"> или
<img src="http://www.yandex.ru/img/test.gif"> или
<img src=http://www.yandex.ru/img/test.gif>


И [ url=http://www.yandex.ru ]тест[ /url ] из
<a href=http://www.yandex.ru>тест</a> или
<a href=http://www.yandex.ru target="_blank">тест</a> или
<a href="http://www.yandex.ru">тест</a>

пробелов после [ и перед ] не нужно.

Намучался я с ними уже((
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ты такой ленивый, что аж в гугле лень набрать
BBcode url replace, BBcode replace, BBcode img replace, BBcode [img] replace ?
 

Krishna

Продался Java
crond
Если не секрет, а почему такая задача стоит?
Просто обычно в другую сторону изменяют..
 

kode

never knows best
Re: вопрос о регулярных выражениях

Автор оригинала: crond
Народ, никто не поделится функцией преобразования html тегов <img> и <a> в bbcode. Проблема в том, что url в тегах иногда обрамлен кавычками, а иногда нет
Нужно получить [ img ]http://www.yandex.ru/img/test.gif[ /img ] из
<img src=http://www.yandex.ru/img/test.gif align="left"> или
<img src="http://www.yandex.ru/img/test.gif"> или
<img src=http://www.yandex.ru/img/test.gif>


И [ url=http://www.yandex.ru ]тест[ /url ] из
<a href=http://www.yandex.ru>тест</a> или
<a href=http://www.yandex.ru target="_blank">тест</a> или
<a href="http://www.yandex.ru">тест</a>

пробелов после [ и перед ] не нужно.

Намучался я с ними уже((
Так в чём проблема заюзать например simplexml? Или тебе про trim($a,'"") неизвестно?
 

crond

Новичок
Задача стояла пропарсить рсс ленту и загнать ее на форум.
Mr_Max, к сожалению поиск выдает в основном выажения, основанные на кавычках — ""
Решилось
PHP:
function to_bbcode($string)
{
	static  $str_http_valid = '-:\/a-z.0-9_%+';	
$arr_replace = array(
"/<a\s+.*?(?<=\b)href=(?(?=['\"])(?:(['\"])(.*?)\\1)|([$str_http_valid]*)).*?>(.+?)<\/a>/Xis"
		=> '[url=\\2\\3]\\4[/url]',
		"/<img\s+.*?(?<=\b)src=(?(?=['\"])(?:(['\"])(.*?)\\1)|([$str_http_valid]*)).*?\/?>/Xis"
		=> '[img]\\2\\3[/img]'
);
	$string = preg_replace(array_keys($arr_replace), array_values($arr_replace), $string);
	return $string;
}
Парсит практически все, кроме вариантов
"<a href='http://test.com>" Тоесть только с одной кавычкой перед адресом.
 
Сверху