Заменить точную переменную строку с переменным текстом в PHP? - PullRequest
1 голос
/ 26 марта 2012

Я работаю в отвечающей системе, похожей на твиттер.
В строке есть фрагмент текста, в котором идентификатор является переменной, например: 14&, 138& в зависимости от того, кто вы отвечаете.
Как мне найти 14& в строке и заменить его на <u>14&</u>?

Вот как это выглядит:

14& this is a reply to the comment with id 14

Вот так это должно выглядеть:

<u>14&</u> this is a reply to the comment with id 14

Как это сделать в PHP?Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 26 марта 2012

Используйте регулярные выражения с функцией preg_replace .

<?php

$str = '14& this is a reply to the comment with id 14';
echo preg_replace('(\d+&)', '<u>$0</u>', $str);

Соответствует регулярному выражению: одна или несколько цифр, за которыми следует амперсанд.

2 голосов
/ 26 марта 2012
$text = "14& this is a reply to the comment with id 14";

var_dump(preg_replace("~\d+&~", '<u>$0</u>', $text));

выходы:

string '<u>14&</u> this is a reply to the comment with id 14' (length=52)

Чтобы избавиться от &:

preg_replace("~(\d+)&~", '<u>$1</u>', $text)

выходы:

string '<u>14</u> this is a reply to the comment with id 14' (length=51)

$0 или $1 будет вашим идентификатором. Вы можете заменить разметку на что угодно.

например ссылка:

$text = "14& is a reply to the comment with id 14";

var_dump(preg_replace("~(\d+)&~", '<a href="#comment$1">this</a>', $text));

выходы:

string '<a href="#comment14">this</a> is a reply to the comment with id 14' (length=66)
2 голосов
/ 26 марта 2012

Если вы знаете идентификатор, все просто:

<?php
  $tweet_id = '14';
  $replaced = str_replace("{$tweet_id}&", "<u>{$tweet_id.}&</u>", $original);

Если нет, preg_replace

<?php
  //look for 1+ decimals (0-9) ending with '$' and replaced it with
  //original wrapped in <u>
  $replaced = preg_replace('/(\d+&)/', '<u>$1</u>', $original);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...