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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тег а в url и email 
:(
    Опции темы
mkredaktor
Дата 24.3.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите плиз. Есть функция которая переносит текст статьи из сайта на форум, и в итоге все ссылки вида <a href=http> и <a href=mailto> заменяются на [url], а нужно что бы емейлы делались через [email]. Помогите плиз дописать код, что бы правильно работало. 
Вот текущий кусок кода:
Код

        $search = array(
                        "/\[a.+?(href=\"?http){1}/i",
                    "/\[a.+?(href=\"?mailto:){1}/i",
                        "/\[a.+?(href=\"?){1}/i",                 
                        "/\[\/a\]/i");

            $replace = array(
                             "[url=http",
                     "[email=",
                             "[url=".$mosConfig_live_site."/",
                             "[/url]");
      
        $message = preg_replace($search, $replace, $message);   


Заменить "/\[a.+?(href=\"?mailto:){1}/i", на нужный ббкод получилось, а вот как сделать что бы различать где нужен закрывающий тег [/url] или [/email], не знаю.



M
MoLeX
Модератор:  пользуемся конструкцией [cоde=php][/cоde]


Это сообщение отредактировал(а) MoLeX - 26.3.2008, 12:05
PM MAIL   Вверх
mishaSL
Дата 26.3.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



mkredaktor, приведи исходный кусок кода HTML и то что должно получиться.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Smith
Дата 26.3.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

$str = preg_replace("/<a href=\"mailto:(.*)\">(.*)</a>/i", "[email=//1]//2[/email]", $str);
$str = preg_replace("/<a href=\"(.*)\">(.*)</a>/i", "[url=//1]//2[/url]", $str);

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


Новичок



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

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



Цитата(Smith @ 26.3.2008,  12:37)
Код

$str = preg_replace("/<a href=\"mailto:(.*)\">(.*)</a>/i", "[email=//1]//2[/email]", $str);
$str = preg_replace("/<a href=\"(.*)\">(.*)</a>/i", "[url=//1]//2[/url]", $str);

Не работает. Вроде все правильно написано, но пишет ошибку
Unknown modifier 'a'
PM MAIL   Вверх
flashaa
Дата 28.3.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

$str = preg_replace("#<a href=\"mailto:(.*)\">(.*)</a>#i", "[email=//1]//2[/email]", $str);
$str = preg_replace("#<a href=\"(.*)\">(.*)</a>#i", "[url=//1]//2[/url]", $str);

PM MAIL   Вверх
mkredaktor
Дата 28.3.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(mkredaktor @ 28.3.2008,  13:41)
Цитата(Smith @ 26.3.2008,  12:37)
Код

$str = preg_replace("/<a href=\"mailto:(.*)\">(.*)</a>/i", "[email=//1]//2[/email]", $str);
$str = preg_replace("/<a href=\"(.*)\">(.*)</a>/i", "[url=//1]//2[/url]", $str);

Не работает. Вроде все правильно написано, но пишет ошибку
Unknown modifier 'a'

Кстати добавил \/a

И код стал без ошибок, но все равно не работает :(

Добавлено через 1 минуту и 4 секунды
Цитата(flashaa @ 28.3.2008,  14:19)
Код

$str = preg_replace("#<a href=\"mailto:(.*)\">(.*)</a>#i", "[email=//1]//2[/email]", $str);
$str = preg_replace("#<a href=\"(.*)\">(.*)</a>#i", "[url=//1]//2[/url]", $str);

Сейчас проверю
PM MAIL   Вверх
mkredaktor
Дата 28.3.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ээ. Вот что оно заменило в итоге
[email=//1]//2[/email]
PM MAIL   Вверх
flashaa
Дата 28.3.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мда, у Smitha в регулярке как минимум 3 ошибки было.. Вот исправленное целиком:
Код

$str = preg_replace('#<a href="mailto:(.*?)">(.*?)</a>#i', '[email=$1]$2[/email]', $str);
$str = preg_replace('#<a href="(.*?)">(.*?)</a>#i', '[url=$1]$2[/url]', $str);

Этот код будем заменять, только правильные атрибуты href, значения которых были в кавычках, причем именно в двойных. Если надо большего, пиши.

Это сообщение отредактировал(а) flashaa - 28.3.2008, 15:14
PM MAIL   Вверх
mkredaktor
Дата 28.3.2008, 15:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот какой код хтмл я пытаюсь заменить. Может так станет нагляднее.
Код

<a href="mailto:[email protected]">[email protected]</a>
<a title="О портале" target="_blank" href="content/view/7/34/">О портале</a>
<a title="Почитать" target="_blank" href="http://zdorovja.com.ua/content/view/7/35/">Почитать</a>


И нужно получить уже код для форума SMF в таком виде:
Код

[[email protected]][email protected][/email]
[url=http://zdorovja.com.ua/content/view/7/34/]О портале[/url]
[url=http://zdorovja.com.ua/content/view/7/35/]Почитать[/url]


Вот эта переменная содержит коренной путь к сайту $mosConfig_live_site = http://zdorovja.com.ua/
Тоесть должно быть три комбинации:
Две с адресом с $mosConfig_live_site и без и одна комбинация замены мыла.

flashaa, Вот теперь что получилось:
[[email protected]

И после єтого пусто. Тоесть видно все что после ємейле, чего то все обрезало.

Это сообщение отредактировал(а) mkredaktor - 28.3.2008, 16:15
PM MAIL   Вверх
ksnk
Дата 28.3.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Код

$str = preg_replace('~<a[^>]*href=(["\'])mailto:([^\\1]*)\\1[^>]*>(.*?)</a>~i', '[email=$2]$3[/email]', $str);
$str = preg_replace('~<a[^>]*href=(["\'])([^\\1]*)\\1[^>]*>(.*?)</a>~i', '[url=$2]$3[/url]', $str);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mkredaktor
Дата 28.3.2008, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(ksnk @ 28.3.2008,  17:05)
Код

$str = preg_replace('~<a[^>]*href=(["\'])mailto:([^\\1]*)\\1[^>]*>(.*?)</a>~i', '[email=$2]$3[/email]', $str);
$str = preg_replace('~<a[^>]*href=(["\'])([^\\1]*)\\1[^>]*>(.*?)</a>~i', '[url=$2]$3[/url]', $str);

Тоже самое. 
В итоге выводит текст и после [[email protected]
пусто и ничего нет. По каким то причинам он его дальше обрубает. 
PM MAIL   Вверх
ksnk
Дата 28.3.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



вот это
Код

$str='<a href="mailto:[email protected]">[email protected]</a>
<a title="О портале" target="_blank" href="content/view/7/34/">О портале</a>
<a title="Почитать" target="_blank" href="http://zdorovja.com.ua/content/view/7/35/">Почитать</a>';
$str = preg_replace('~<a[^>]*href=(["\'])mailto:([^\\1]*?)\\1[^>]*>(.*?)</a>~is', '[email=$2]$3[/email]', $str);
$str = preg_replace('~<a[^>]*href=(["\'])([^\\1]*?)\\1[^>]*>(.*?)</a>~is', '[url=$2]$3[/url]', $str);
echo $str ;

у меня выдает 
Код

[[email protected]][email protected][/email] [url=content/view/7/34/]О портале[/url] [url=http://zdorovja.com.ua/content/view/7/35/]Почитать[/url]


Это сообщение отредактировал(а) ksnk - 28.3.2008, 20:55


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
flashaa
Дата 28.3.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А у меня вот этот код

Код

<?php
$str = '<a href="mailto:[email protected]">[email protected]</a>';

$str = preg_replace('#<a href="mailto:(.*?)">(.*?)</a>#i', '[email=$1]$2[/email]', $str);
//$str = preg_replace('#<a href="(.*?)">(.*?)</a>#i', '[url=$1]$2[/url]', $str);

echo $str;
?>

Выводит вот что: 
Код

[[email protected]][email protected][/email]


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


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Не заметил косяк... поправил регулярку 

flashaa, в условии встречаются еще и такие данные 
Код

...<a title="О портале" target="_blank" href= ...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
flashaa
Дата 28.3.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


 




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


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

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