Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Ср Май 31 2006 13:07 Заголовок сообщения: PHP: работа со строкой и подстрокой. |
|
|
как вот это
Код: |
[URL]www.nn.ru[/URL]
|
заменить на
Код: | [URL=http://www.nn.ru]www.nn.ru[/URL] |
?
в тексте это самое обозначение может встречаться несколько раз. |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Ср Май 31 2006 14:48 Заголовок сообщения: |
|
|
Код: | $l_Links = explode( "[URL]", $l_Result );
for ( $i = 0; $i < count( $l_Links ); $i++ ){
if ( strstr( $l_Links[$i], "[/URL]" ) ){
$l_Links[$i] = str_replace( strstr( $l_Links[$i], "[/URL]" ), "", $l_Links[$i] );
} else {
$l_Links[$i] = "";
}
if ( $l_Links[$i] ){
$l_Result = str_replace( "[URL]".$l_Links[$i], "[URL=".$l_Links[$i]."]".$l_Links[$i], $l_Result );
}
}
|
вроде бы работает.
(сам пью, сам гуляю...)
Последний раз редактировалось: dipsy (Ср Май 31 2006 14:53), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
Neeoon
Зарегистрирован: 19.11.2004 Сообщения: 173 Откуда: Ukraine
|
Добавлено: Ср Май 31 2006 14:50 Заголовок сообщения: |
|
|
а тебе это надо на чем?
вот это на пхп
Цитата: |
<?
echo $str="www.111.ru";
$s=explode("[URL]",$str);
$s=explode("[/URL]",$s[1]);
$a=str_replace($str,"]$s[0]",$str);
echo $a;
?>
|
_________________ Всё, что ни делается, - всё к лучшему!
Последний раз редактировалось: Neeoon (Ср Май 31 2006 15:01), всего редактировалось 1 раз |
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Ср Май 31 2006 14:58 Заголовок сообщения: |
|
|
Neeoon писал(а): | а тебе это надо на чем?
вот это на пхп
|
на нём и надо было. спасибо.
Neeoon писал(а): | Всё, что не делается, - всё к лучшему! |
как правильно, - "не делается"
или "ни делается"? |
|
Вернуться к началу |
|
|
EvilHamster
Зарегистрирован: 07.04.2006 Сообщения: 30 Откуда: www.ncstu.ru
|
Добавлено: Ср Май 31 2006 18:29 Заголовок сообщения: |
|
|
<?php
$str = '[URL]foo[/URL]';
$str = preg_replace('|\\[\\/?URL\\]|', '', $str); //Выделяем строку без тегов.
$str = "[URL=html://{$str}]{$str}[/URL]"; //Прибавляем теги
echo $str;
?> |
|
Вернуться к началу |
|
|
EvilHamster
Зарегистрирован: 07.04.2006 Сообщения: 30 Откуда: www.ncstu.ru
|
Добавлено: Ср Май 31 2006 19:21 Заголовок сообщения: |
|
|
Предыдущий код заменяет только в строке типа '[URL]foo[/URL]'
Нижеследующий код делает тоже самое у строки с неограниченным количеством указанных конструкций
Код: |
<?php
$str = '
[URL]foo[/url]tirlim-
[URL]bar[/url]bombom
[URL]foobar[/url]taram-
[URL]foobar[/url]pampam';
$condition = '#
\\[URL\\]
(\S*?)
\\[\\/URL\\]
#xi';
$str = preg_replace($condition, '[URL=http://$1]$1[/URL]', $str);
echo $str;
?>
|
|
|
Вернуться к началу |
|
|
dipsy
Зарегистрирован: 26.01.2005 Сообщения: 424 Откуда: Н. Новгород
|
Добавлено: Ср Май 31 2006 23:01 Заголовок сообщения: |
|
|
EvilHamster писал(а): |
Код: |
$condition = '#
\\[URL\\]
(\S*?)
\\[\\/URL\\]
#xi';
$str = preg_replace($condition, '[URL=http://$1]$1[/URL]', $str);
|
|
вау... в смысле, - вот это да!
такой конструкции никогда не видел - $1
можно просить Вас прокомментировать - как это работает (или где можно прочитать про эту фичу)?
Спасибо. |
|
Вернуться к началу |
|
|
EvilHamster
Зарегистрирован: 07.04.2006 Сообщения: 30 Откуда: www.ncstu.ru
|
Добавлено: Ср Май 31 2006 23:13 Заголовок сообщения: |
|
|
Тут весь прикол в функции preg_replace... Документация по ней здесь: php.net/preg_replace
В кратце эта функция заменяет в строке $str все, что удовлетворяет регулярному выражению $condition... Регулярные выражения (PCRE)это отдельная большая тема. Где почитать не знаю. |
|
Вернуться к началу |
|
|
Neeoon
Зарегистрирован: 19.11.2004 Сообщения: 173 Откуда: Ukraine
|
Добавлено: Чт Июн 01 2006 11:43 Заголовок сообщения: |
|
|
Как я понимаю это регулярное выражение из Perl, и функция preg_replace тоже? _________________ Всё, что ни делается, - всё к лучшему! |
|
Вернуться к началу |
|
|
EvilHamster
Зарегистрирован: 07.04.2006 Сообщения: 30 Откуда: www.ncstu.ru
|
Добавлено: Чт Июн 01 2006 16:57 Заголовок сообщения: |
|
|
Это регулярное выражение в формате PCRE (Perl Compatible Regular Expression). То есть как видно из названия - перл совместимое.
Функция preg_replace пхпшная. |
|
Вернуться к началу |
|
|
|