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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> preg_replace и точка! 
V
    Опции темы
Corol
Дата 12.3.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нужно заменить http:// на http://www. 
пишу: 
Код
$url = preg_replace('/http:\/\//','http://www.',$url);

меняет.... но без точки!?? что не так?
PM MAIL   Вверх
bars80080
Дата 12.3.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



а за экранировать её?


Код

$url = preg_replace('/http:\/\//','http://www\.',$url);

PM MAIL WWW   Вверх
Corol
Дата 12.3.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вообщем крутое решение: 
Код

$url = preg_replace('/http:\/\//','http://www.www.',$url);


пс: может кто-то прояснит чего так?

Добавлено @ 20:48
Цитата(bars80080 @  12.3.2010,  20:41 Найти цитируемый пост)
preg_replace('/http:\/\//','http://www\.',$url);

не фурычит

Это сообщение отредактировал(а) Corol - 12.3.2010, 20:48
PM MAIL   Вверх
bars80080
Дата 12.3.2010, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



что-то у тебя неправильно настроено. у меня работает даже 

Код

$url = preg_replace('/http:\/\//','http://www.',$url);


проверь, что там у тебя в реальности находится в переменных до и после этой конструкции
PM MAIL WWW   Вверх
skyboy
Дата 12.3.2010, 21:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



встречный вопрос: зачем в этом случае preg_replace, если str_replace хватает "за глаза"?
PM MAIL   Вверх
brother79
Дата 4.5.2010, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Corol @  13.3.2010,  00:37 Найти цитируемый пост)
меняет.... но без точки!?? что не так? 

Скорее всего не всё экранированно в первом аргументе. Второй экранировать не нужно.

Код

$url = preg_replace('/http\:\/\//','http://www.',$url);


или посмотри что выдаст 

Код

preg_quote('http://');



Цитата(skyboy @  13.3.2010,  01:26 Найти цитируемый пост)
встречный вопрос: зачем в этом случае preg_replace, если str_replace хватает "за глаза"? 


Поддерживаю в данном случае.


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


Шустрый
*


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

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



Чисто для справки: то, что выдаёт preg_quote() на самом деле сразу подставлять в строковой литерал не надо, т.к. есть ещё один уровень экранирования (PHP). То есть правильнее
Код

$pattern = '/http\\:\\/\\//';

Хотя в данном случае вам «повезло» и можно писать и так:
Код

$pattern = '/http\:\/\//';

PM MAIL   Вверх
brother79
Дата 6.5.2010, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(SickFxck @  4.5.2010,  19:35 Найти цитируемый пост)
Чисто для справки: то, что выдаёт preg_quote() на самом деле сразу подставлять в строковой литерал не надо, т.к. есть ещё один уровень экранирования (PHP). То есть правильнее
Выделить всёкод PHP
1:
    
$pattern = '/http\\:\\/\\//';


Поясни пожалуйста по двойному слешу, я честно сказать не понял к чему это. Просто я как-то столкнулся с проблемой экранировать \n что в итоге решилось странным числом слешейперед n, оно работало, но я так и не понял почему так. Всё остальное экранировалось всегда без проблем.


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


Шустрый
*


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

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



Если ты экранируешь что-то с помощью бекслеша, то разве не логично экранировать и сам бекслеш?
Код

$s = 'O\'RLY'; // O'RLY
$s = 'O\\\'RLY'; // O\'RLY
$s = 'O\\'RLY'; // Parse error

Особенно это будет чувствоваться при двойных кавычках, т.к. там подобных последовательностей больше.
PM MAIL   Вверх
brother79
Дата 6.5.2010, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(SickFxck @  6.5.2010,  11:41 Найти цитируемый пост)
Особенно это будет чувствоваться при двойных кавычках, т.к. там подобных последовательностей больше. 


Не, ну последние примеры - тут всё понятно. Про двойные - там тоже всё ясно, сначала слеш проэкранировать, потом символ, а в одинарных,  '/http\\:\\/\\//' - тут-то какой смысл? ведь '\:' == '\\:' 


--------------------
PM MAIL WWW   Вверх
SickFxck
Дата 7.5.2010, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



brother79, смысл в чётком понимании на каком уровне происходит экранирование. В данном случае это, конечно, необязательно и, быть может, даже ухудшает читаемость.
PM MAIL   Вверх
brother79
Дата 7.5.2010, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(SickFxck @  7.5.2010,  09:19 Найти цитируемый пост)
brother79, смысл в чётком понимании на каком уровне происходит экранирование. В данном случае это, конечно, необязательно и, быть может, даже ухудшает читаемость. 


У меня была задача отследить \n в строке. Как я только не пытался, пока не подсказали в одинарных кавычках использовать '\\n' Вот тут я так и не понял на каком уровне происходит экранирование, т.к. в одинарных кавычках, \n никак не преобразовывается, при этом в регулярке оно не пашет.


--------------------
PM MAIL WWW   Вверх
SickFxck
Дата 7.5.2010, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



brother79, 
Код

$pattern = '/\\\\n/';

?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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