Во-первых, я Приведем пример того, как прокручивать строку и работать с каждым словом в строке.
Во-вторых, я объясню каждую часть кода, чтобы вы могли изменить его в соответствии с вашими конкретными потребностями.
Вот как переключаться из последних 2 буквы (если они «еу») каждого слова, которое имеет длину более 3-х букв.
<?php
// Example string
$string = 'Hey they ey shay play stay nowhey';
// Create array of words splitting at spaces
$string = explode(" ", $string);
// The search and replace strings
$lookFor = "ey";
$switchTo = "ei";
// Cycle through the words
foreach($string as $key => $word)
{
// If the word has more than 3 letters
if(strlen($word) > 3)
{
// If the last two letters are what we want
if (substr($word, -2) == $lookFor)
{
// Replace the last 2 letters of the word
$string[$key] = substr_replace($word, $switchTo, -2);
}
}
}
// Recreate string from array
$string = implode(" ", $string);
// See what we got
echo $string;
// The above will print:
// Hey thei ey sashei play nowhei
?>
Live example
Я объясню каждую функцию, так что вы можете изменить выше, чтобы точно, как вы хотите, так как я точно не понимаю все ваши требования:
- explode() возьмет строку и разделит ее на массив. Первый аргумент - это то, что вы используете, чтобы разделить его. Второй аргумент - строка, поэтому
explode(" ", $string)
разделит $string
с помощью пробелов. Пространства не будут включены в массив.
- foreach() будет циклически проходить через каждый элемент массива.
foreach($string as $key => $word)
будет проходить через каждый элемент $string
, и для каждого элемента он присваивает номер индекса $key
и значение элемента (в этом случае) в $word
.
- strlen() возвращает длину строки.
- substr() возвращает часть строки. Первый аргумент - это строка, второй аргумент - это начало подстроки, а третий необязательный аргумент - длина подстроки. При отрицательном запуске начало будет вычисляться от конца строки до конца строки. Другими словами,
substr($word, -2)
возвращает подстроку, которая начинается двумя от конца строки и идет в конец строки .... последние две буквы. Если вам нужны первые две буквы, вы должны использовать substr($word, 0, 2)
, так как вы начинаете с самого начала и хотите длину в 2 буквы.
- substr_replace() заменит подстроку в строке. Первый аргумент - целая строка. Второй аргумент - ваша замещающая подстрока. Третий аргумент заключается в том, где начинается замещение, а четвертым необязательным аргументом является длина подстроки, поэтому
substr_replace($word, $switchTo, -2)
возьмет $word
и, начиная с предпоследнего письма, замените то, что там есть $switchTo
. В этом случае мы отключим две последние буквы. Если вы хотите заменить первые две буквы, вы должны использовать substr_replace($word, $switchTo, 0, 2)
- implode() - это противоположность взрыву. Он принимает массив и формирует его в строку, используя указанный разделитель.
что вы имеете в виду, когда говорите «символы каждого слова»? – Svisstack
«миллион»: «m, i, l» - первые три символа «i, o, n» - последние 3 символа – James
Ваш вопрос будет сразу же понятнее, если вы использовали «буквы» вместо «символов». – meagar