Заменить последнее слово в строке - PullRequest
6 голосов
/ 14 сентября 2010
$variable = 'put returns between paragraphs';

Значение этой переменной каждый раз меняется.

Как добавить текст перед последним словом?


Например, если мы хотим добавить 'and', результат должен быть (для этого примера):

$variable = 'put returns between and paragraphs';

Ответы [ 5 ]

10 голосов
/ 14 сентября 2010

Вы можете найти пробелы last , используя функцию strrpos():

$variable = 'put returns between paragraphs';
$lastSpace = strrpos($variable, ' '); // 19

Затем возьмите две подстроки (до и после последнего пробела) и оберните вокруг 'и':

$before = substr(0, $lastSpace); // 'put returns between'
$after = substr($lastSpace); // ' paragraphs' (note the leading whitespace)
$result = $before . ' and' . $after;

EDIT
Хотя никто не хочет связываться с подстроковыми индексами, это очень базовая задача, для которой PHP поставляется с полезными функциями (в частности, strrpos() и substr()).Следовательно, не нужно для манипулирования массивами, обращенными строками или регулярными выражениями - но вы, конечно, можете :)

2 голосов
/ 14 сентября 2010

Вы можете использовать preg_replace():

$add = 'and';
$variable = 'put returns between paragraphs';    
echo preg_replace("~\W\w+\s*$~", ' ' . $add . '\\0', $variable);

Печать:

put returns between and paragraphs

Это будет игнорировать конечные пробелы, чего не делает решение @ jensgram. (например: он сломается, если ваша строка будет $variable = 'put returns between paragraphs '. Конечно, вы можете использовать trim(), но зачем беспокоиться о том, чтобы тратить больше памяти и вызывать другую функцию, если вы можете сделать это с помощью регулярных выражений?: -)

1 голос
/ 14 сентября 2010

другой вариант

  <?php
  $v = 'put returns between paragraphs';
  $a = explode(" ", $v);
  $item = "and";
  array_splice($a, -1, 0, $item);
  echo  implode(" ",$a);
  ?>
1 голос
/ 14 сентября 2010
$addition = 'and';
$variable = 'put returns between paragraphs';
$new_variable = preg_replace('/ ([^ ]+)$/', ' ' . $addition . ' $1', $variable);
1 голос
/ 14 сентября 2010
1) reverse your string
2) find the first whitespace in the string.
3) chop off the remainder of the string.
4) reverse that, append your text
5) reverse and add back on the first portion of the string from step 3, including extra whitespace as needed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...