Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: preg_replace

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Acuna
Отправлено: 05 Декабря, 2008 - 00:50:36
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Здравствуйте! У меня вопрос: можно-ли с помощью регулярных выражений заменить теги <title></title> на <мойтег></мойтег>, НО ТОЛЬКО ПРИ УСЛОВИИ, что в тегах <title></title> есть слово "Регистрация", а иначе замену не производить? Заранее благодарен!

(Отредактировано автором: 05 Декабря, 2008 - 00:51:12)



-----
The Lisalover
!!! I LOVE PHP !!!
 
 Top
Champion Супермодератор
Отправлено: 05 Декабря, 2008 - 08:56:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




$line = preg_replace("/\<title\>[^<>]*Регистрация[^<>]*\<\/title\>/i", '<ваш тэг/>', $line)
(Добавление)
И если слово "Регистрация" надо оставить, так и напишите в строке замены
 
 Top
Acuna
Отправлено: 05 Декабря, 2008 - 15:16:19
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




ВО! Класс! Работает! Но что делать, если это слово "Регистрация" в тегах <tag></tag> записано вот так: <tag><a href="regist.php">Регистрация</a></tag> (но может и по-другому, не обязательно ссылкой). Что можно тогда сделать?


-----
The Lisalover
!!! I LOVE PHP !!!
 
 Top
Champion Супермодератор
Отправлено: 05 Декабря, 2008 - 15:43:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Вам нужно было заменить тэги title). А в нем других тэгов вроде бы как не должно быть
(Добавление)
Если вы про то, что параметры у тэга могут быть$line = preg_replace("/\<title[^>]*\>[^<>]*Регистрация[^<>]*\<\/title\>/i", '<ваш тэг/>', $line)
 
 Top
Acuna
Отправлено: 05 Декабря, 2008 - 21:00:29
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




<title> - это я просто название тега указал... Мне хочется заменить <tag></tag> на <тег></тэг> в этой строке: <tag><a href="regist.php">Регистрация</a></tag>, но в результате чтобы содержание в тегах сохранялось. (т. е. заменить <tag><a href="regist.php">Регистрация</a></tag> на <тэг><a href="regist.php">Регистрация</a></тег> ), то только тогда, когда в тегах <tag></tag> есть слово "Регистрация" в любом месте.


-----
The Lisalover
!!! I LOVE PHP !!!
 
 Top
Champion Супермодератор
Отправлено: 05 Декабря, 2008 - 22:12:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




думаю, что тогда надо preg_replace_callback. Завтра поподробнее напишу, а то спать уже пора)
 
 Top
Champion Супермодератор
Отправлено: 06 Декабря, 2008 - 10:37:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. preg_replace_callback ('/(\<tag\>).*Регистрация.*\(<\/tag\>)/iU', replacing)
  2.  
  3. function replacing($matches)
  4. {
  5. var_dump($matches); // смотрм в каких элементах массива оказались нужные нам названия тэгов. вроде 1 и 2, но на всякий случай...
  6. $matches[?] = '<new tag>';
  7. $matches[?] = '</new tag>';
  8. }


вроде вот так
 
 Top
Singularis
Отправлено: 06 Декабря, 2008 - 18:55:58
Post Id


Новичок


Покинул форум
Сообщений всего: 37
Дата рег-ции: Май 2008  


Помог: 0 раз(а)




Всё в одну кучу собрал, если честно…
 
 Top
Champion Супермодератор
Отправлено: 06 Декабря, 2008 - 20:55:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Singularis, это о чём?
 
 Top
Acuna
Отправлено: 07 Декабря, 2008 - 12:42:01
Post Id



Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2008  


Помог: 0 раз(а)




Спасибо. Опа! Я попробовал, но почему-то получилось array(1) { [0]=> string(22) "Регистрация" } и ничего не заменяет...

(Отредактировано автором: 07 Декабря, 2008 - 14:30:20)



-----
The Lisalover
!!! I LOVE PHP !!!
 
 Top
Champion Супермодератор
Отправлено: 07 Декабря, 2008 - 14:34:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




странно, вроде в matches должно было бы оказаться то, что в скобках
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB