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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена в строке отдельных слов ссылками, нужно регулрное выражение 
:(
    Опции темы
Nau
  Дата 19.1.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



суть: мне нужно чтобы во всех строках в тексте начинающихся с символа ">" и заканчивающиеся тегом <br> все отдельные слова были заменены своими ссылками. например:

>     Мама мыла раму <br>
 далее какой-то текст <br>
...                                  <br>
... <br>
> Ещё текст <br>

и слова:"Мама,мыла,раму,Ещё,текст" должны быть заменены на <a href="Мама">Мама</a> и т.д.

по идее это регулярное выражение должно быть примерно:

^>\<([-A-Za-zА-Ба-я]+)\>  ... дальше... <br>$   smile 

либо м.б. какую-то функцию следует применить?
PM MAIL WWW   Вверх
Всемогущий
Дата 19.1.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

<?php
$string = ">     Мама мыла раму <br>
 далее какой-то текст <br>
...                                  <br>
... <br>
> Ещё текст <br>";
    $pattern = "/>(.+)</i";
$replacement = "\<a href=\"$1\">$1</a>\\";
echo preg_replace($pattern, $replacement, $string);
?>



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Nau
Дата 21.1.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Шустрый, всё это конечно здорово, но не то, что я просил всё-таки...

1.) т.к. (.+) берёт всю строку. а мне нужно каждая её часть.

2.) и самое главное, мне нужно хотя бы чтобы бралась строчка которая начинается с новой строки и  с ">" и заканчивающаяся переводом строки или <br>,  а не все строчки с ">" до "<".

к сожалению почему-то конструкции вида ^/>, (^/>), /^/>, \^/>, ^[>], /^[>], \^[>], ^(>),  ^(/>) , /^>, ^>.
не работают... вроде всё перебрал что мог...никак не понимаю почему...
выводится ошибка либо из-за разных слэшей, либо просто символ ^ не понимает...
PM MAIL WWW   Вверх
Mal Hack
Дата 22.1.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Nau, поясни более конкретно задачу, на более конкретном примере.
PM ICQ   Вверх
Всемогущий
Дата 22.1.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 
Цитата(Nau @  22.1.2007,  01:02 Найти цитируемый пост)
2.) и самое главное, мне нужно хотя бы чтобы бралась строчка которая начинается с новой строки и  с ">" и заканчивающаяся переводом строки или <br>,  а не все строчки с ">" до "<".
 
Код

  <?php
$string = "
>     Мама мыла раму <br>
 далее какой-то текст <br>
...                                  <br>
... <br>
> Ещё текст <br>";
    $pattern = "/\r\n>(.+)<br>/i";
$replacement = '<a href="$1">$1</a>';
echo preg_replace($pattern, $replacement, $string);
?>





--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Shaggie
Дата 22.1.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

$example = '>Мама мыла раму<br>
далее какой-то текст <br>
...     <br>
... <br>
> Ещё текст <br>';

$array=preg_split("/<br>/i", $example);  // разбиваем по строкам
for ($i=0;$i<count($array);$i++)             // для каждой строки
{
    if(preg_match("/^\s*?>/", $array[$i]))   // если в начале есть символ ">"
    {
        $array[$i]=preg_replace("/(\w+)/", "<a href=\"$1\">$1</a>", $array[$i]); // обработать строку
    }
}
foreach ($array as $string) echo $string, '<br>';   // вернуть переносы


Это сообщение отредактировал(а) Shaggie - 22.1.2007, 15:31


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Nau
  Дата 25.1.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


 




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


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

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