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 » Регулярные выражения » preg_replace()

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

1. will123 - 13 Октября, 2009 - 13:14:08 - перейти к сообщению
Что нужно изменить в паттерне preg_replace?
CODE (text):
скопировать код в буфер обмена
  1. $str = " akhs djhask hkajs h asjd ka skj</p> a jdks jd </p>";
  2. $str = preg_replace('</p>', 'tag', str, 1);


нужно заменить </p>, но выдает ошибку Warning: preg_replace() [function.preg-replace]: Unknown modifier 'p'
2. movEAX - 13 Октября, 2009 - 13:25:29 - перейти к сообщению
Решение очень просто, и имя ему str_replace, preg_replace тебе тут не нужен.
3. Champion - 13 Октября, 2009 - 13:31:41 - перейти к сообщению
will123 у шаблона должны присутвовать ограничители. Поэтому ошибка. А для твоих целей использовать нужно, действительно, str_replace
4. will123 - 13 Октября, 2009 - 13:48:11 - перейти к сообщению
делаю так
CODE (text):
скопировать код в буфер обмена
  1. $str = " akhs djhask hkajs h asjd ka skj</p> a jdks jd </p>";
  2. $str = str_replace("</p>", "tag", $str, 1);

выдает Fatal error: Only variables can be passed by reference
5. Champion - 13 Октября, 2009 - 13:55:09 - перейти к сообщению
Да, по ссылке можно передавать только переменные (4й параметр). ли тебе нужно заменить только один раз?

Уже обсуждалось совсем недавно - поищи тогда.
6. movEAX - 13 Октября, 2009 - 13:55:48 - перейти к сообщению
Цитата:
Fatal error: Only variables can be passed by reference

А теперь переводим: Фатальная ошибка: Только переменные могут передаваться по ссылке.

Думаем "Что эта за фигня?", и идем читать доку. В доках случайно обнаруживаем примечание:
Цитата:
Начиная с PHP 5.0.0 количество произведенных замен может быть получено в необязательном аргументе count , который передается по ссылке. В версиях до PHP 5.0.0 этот аргумент недоступен.


Продолжаем думать...
7. will123 - 13 Октября, 2009 - 14:01:15 - перейти к сообщению
а как тогда заменить с помощью str_replace только первое вхождение?
(Добавление)
movEAX с английским у меня все гуд, перевести сам могу
8. Champion - 13 Октября, 2009 - 14:15:08 - перейти к сообщению
will123 пишет:
как тогда заменить с помощью str_replace только первое вхождение?
Тема была. Не с помощью str_replace, а с помощью strpos+substr_replace.
Ну или всё-таки preg_replace. Ошибку в нем я тебе указал
9. movEAX - 13 Октября, 2009 - 14:19:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $str = " akhs djhask hkajs h asjd ka skj</p> a jdks jd </p>";
  2.    
  3. $simpleVar=1;
  4. $str = str_replace("</p>", "tag", $str, $simpleVar);
10. will123 - 13 Октября, 2009 - 14:21:32 - перейти к сообщению
ограничители как я понял вот так:
CODE (text):
скопировать код в буфер обмена
  1. $str = " akhs djhask hkajs h asjd ka skj</p> a jdks jd </p>";
  2. $str = preg_replace("/</p>/", "tag", str, 1);
та же ошибка. Может нужно как то экранировать символ "/" в </p>, если да то как?и
P.S. а тема где sub_str+str_pos я создавал)) решил использовать preg_replace()
11. Champion - 13 Октября, 2009 - 14:24:34 - перейти к сообщению
Твоя же тема, тот же вопрос!
http://forum.php.su/topic.php?fo...=4&topic=140
Объясни мне такое явление
12. movEAX - 14 Октября, 2009 - 18:00:28 - перейти к сообщению
Извиняюсь за предыдущий пост, ибо он не корректен. В описание доки не до конца вник, в чем каюсь.

Попробуй такой код:
PHP:
скопировать код в буфер обмена
  1.  
  2.           $str = " akhs djhask</p> hkajs h asjd ka skj</p> a jdks jd </p>";
  3.           $StrPosition = strpos($str,'</p>' );
  4.           $str = substr_replace($str,"tag",$StrPosition,4);
  5.           echo   $str  ;


Цитата:

та же ошибка. Может нужно как то экранировать символ "/" в </p>, если да то как?


Попробуй вместо /.../ использовать что-то на подобии #...# или !...!, тогда ничего экранировать не придется.

 

Powered by ExBB FM 1.0 RC1