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
Форумы портала PHP.SU :: Версия для печати :: preg_replace
Форумы портала PHP.SU » PHP » Программирование на PHP » preg_replace

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

1. Acuna - 05 Декабря, 2008 - 00:50:36 - перейти к сообщению
Здравствуйте! У меня вопрос: можно-ли с помощью регулярных выражений заменить теги <title></title> на <мойтег></мойтег>, НО ТОЛЬКО ПРИ УСЛОВИИ, что в тегах <title></title> есть слово "Регистрация", а иначе замену не производить? Заранее благодарен!
2. Champion - 05 Декабря, 2008 - 08:56:39 - перейти к сообщению
$line = preg_replace("/\<title\>[^<>]*Регистрация[^<>]*\<\/title\>/i", '<ваш тэг/>', $line)
(Добавление)
И если слово "Регистрация" надо оставить, так и напишите в строке замены
3. Acuna - 05 Декабря, 2008 - 15:16:19 - перейти к сообщению
ВО! Класс! Работает! Но что делать, если это слово "Регистрация" в тегах <tag></tag> записано вот так: <tag><a href="regist.php">Регистрация</a></tag> (но может и по-другому, не обязательно ссылкой). Что можно тогда сделать?
4. Champion - 05 Декабря, 2008 - 15:43:28 - перейти к сообщению
Вам нужно было заменить тэги title). А в нем других тэгов вроде бы как не должно быть
(Добавление)
Если вы про то, что параметры у тэга могут быть$line = preg_replace("/\<title[^>]*\>[^<>]*Регистрация[^<>]*\<\/title\>/i", '<ваш тэг/>', $line)
5. Acuna - 05 Декабря, 2008 - 21:00:29 - перейти к сообщению
<title> - это я просто название тега указал... Мне хочется заменить <tag></tag> на <тег></тэг> в этой строке: <tag><a href="regist.php">Регистрация</a></tag>, но в результате чтобы содержание в тегах сохранялось. (т. е. заменить <tag><a href="regist.php">Регистрация</a></tag> на <тэг><a href="regist.php">Регистрация</a></тег> ), то только тогда, когда в тегах <tag></tag> есть слово "Регистрация" в любом месте.
6. Champion - 05 Декабря, 2008 - 22:12:44 - перейти к сообщению
думаю, что тогда надо preg_replace_callback. Завтра поподробнее напишу, а то спать уже пора)
7. Champion - 06 Декабря, 2008 - 10:37:24 - перейти к сообщению
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. }


вроде вот так
8. Singularis - 06 Декабря, 2008 - 18:55:58 - перейти к сообщению
Всё в одну кучу собрал, если честно…
9. Champion - 06 Декабря, 2008 - 20:55:16 - перейти к сообщению
Singularis, это о чём?
10. Acuna - 07 Декабря, 2008 - 12:42:01 - перейти к сообщению
Спасибо. Опа! Я попробовал, но почему-то получилось array(1) { [0]=> string(22) "Регистрация" } и ничего не заменяет...
11. Champion - 07 Декабря, 2008 - 14:34:12 - перейти к сообщению
странно, вроде в matches должно было бы оказаться то, что в скобках

 

Powered by ExBB FM 1.0 RC1