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

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

1. will123 - 01 Октября, 2009 - 19:09:41 - перейти к сообщению
Допустим есть у нас строка:
CODE (text):
скопировать код в буфер обмена
  1. $s = "текст текст текст текст<br>
  2.  текст текст текст текст текст текст<br>
  3. и так далее..."

как можно вырезать и заменить(на <p> допустим) только первый <br> а остальные не трогать?
2. EuGen - 01 Октября, 2009 - 19:28:14 - перейти к сообщению
http://php.su/functions/?str_replace

Цитата:

mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )

Эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace.

Замечание: Начиная с PHP 5.0.0 количество произведенных замен может быть получено в необязательном аргументе count, который передается по ссылке. В версиях до PHP 5.0.0 этот аргумент недоступен.
3. will123 - 01 Октября, 2009 - 20:23:23 - перейти к сообщению
EuGen что то не работает как надо. После первого <br> вырезает все. Пробывал через substr_replace, но тоже режет
PHP:
скопировать код в буфер обмена
  1.      
  2. $pos = strpos($matchesArrWithoutTags, '<br>');
  3. $matchesArrWithoutTags = substr_replace($matchesArrWithoutTags, "<p>", $pos);
4. EuGen - 01 Октября, 2009 - 20:43:19 - перейти к сообщению
Я не про substr_replace Вам говорил.
5. will123 - 01 Октября, 2009 - 20:48:07 - перейти к сообщению
EuGen пишет:
Я не про substr_replace Вам говорил.
да я просто попробывал через нее но не получилось, вот так делал
CODE (text):
скопировать код в буфер обмена
  1. $matchesArrWithoutTags = str_replace ($matchesArrWithoutTags,"<br>","<p>");
и так
CODE (text):
скопировать код в буфер обмена
  1. $count = 1;
  2. $matchesArrWithoutTags = str_replace ($matchesArrWithoutTags,"<br>","<p>", $count);
6. Ch_chov - 01 Октября, 2009 - 20:53:20 - перейти к сообщению
Переменная $count нужна для того, что бы узнать кол-во произведенных замен.
7. will123 - 02 Октября, 2009 - 06:53:00 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. $matchesArrWithoutTags = str_replace ($matchesArrWithoutTags,"<br>","<p>");

но все равно режет текст, или я что то не правильно делаю?
(Добавление)
мне нужно заменить только первое вхождение, как я понял str_replace заменяет все вхождения?
8. Ch_chov - 02 Октября, 2009 - 08:22:04 - перейти к сообщению
9. will123 - 02 Октября, 2009 - 08:40:48 - перейти к сообщению
Ch_chov Спасибо огромное!!! все работает, как я понял в параметре цифра 1 означает что нужно заменить только первое вхождение? и почему тег <br>записывается с косыми чертами?
10. Ch_chov - 02 Октября, 2009 - 08:51:11 - перейти к сообщению
Четвертый параметр задает кол-во замен. Смотри описание функции preg_replace.

–––––
О регулярных выражениях
11. Champion - 02 Октября, 2009 - 09:41:14 - перейти к сообщению
mixed str_replace ( mixed $search, mixed $replace, mixed $subject [, int $&count] )

Зачем тут регулярка?
12. EuGen - 02 Октября, 2009 - 13:02:12 - перейти к сообщению
По-моему, я все ясно выразил в 1-м посте.
13. Ch_chov - 02 Октября, 2009 - 16:12:24 - перейти к сообщению
Цитата:
Зачем тут регулярка?

Ему нужно заменить только часть тегов.
14. Champion - 02 Октября, 2009 - 16:14:34 - перейти к сообщению
И что?
15. Ch_chov - 02 Октября, 2009 - 16:25:31 - перейти к сообщению
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )

Эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace.

 

Powered by ExBB FM 1.0 RC1