Str_replace с темой, переданной по ссылке - PullRequest
0 голосов
/ 30 августа 2018

Учитывая следующий пример:

public function replaceMyText($search, $replace, &$content)
{
    $newContent = str_replace($search, $replace, $content, $count = 1)
    $content = $newContent;
}

Может ли это вызвать Warning, что только переменные могут быть переданы по ссылке? Если так, я не могу полностью понять, почему.

Должен ли я присвоить $content другой переменной, прежде чем передать ее в функцию str_replace?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018
<?php
function replaceMyText($search, $replace, &$content)
{
    $newContent = str_replace($search, $replace, $content, $count = 1);
    $content = $newContent;
}

replaceMyText("123", "456", "123456");

использование этой функции без переменной приведет к фатальной ошибке

Fatal error: Only variables can be passed by reference in /usercode/file.php on line 8

потому что

Никакие другие выражения не должны передаваться по ссылке, поскольку результат не определен.

из http://php.net/manual/en/language.references.pass.php

Вы можете использовать это

$a = "123456";
replaceMyText("123", "456", $a);
echo $a;

Извините за мой плохой английский. Я надеюсь, что это может помочь вам.

0 голосов
/ 30 августа 2018

EDIT

Пожалуйста, попробуйте этот код:

function replaceMyText($search, $replace, $content)
{
    $newContent = str_replace($search, $replace, $content,$count=1);
    return $newContent;
}

$searchValue = "test";
$replaceWith = "magic trick";
$actualContent = "This is a test.";

$replaced = replaceMyText($searchValue,$replaceWith,$actualContent);

echo $replaced;
...