PHP str_ireplace только один раз - PullRequest
0 голосов
/ 28 августа 2011

Я ищу модифицированную версию str_ireplace (без учета регистра), которая заменит ТОЛЬКО ОДИН РАЗ.

Я читал в Интернете, что это выполнимо с помощью preg или других методов, но я ищу универсальную функцию, которую можно использовать повторно.

Бонус: использование будет заключаться в добавлении тега привязки ссылки вокруг слова, поэтому было бы неплохо, если бы он каким-то образом сохранил заглавную букву исходного слова.

Ответы [ 3 ]

1 голос
/ 28 августа 2011

Звучит так, как будто вы определенно хотите preg_replace(). Если вы хотите, вы можете создать пользовательскую функцию:

function put_in_link($str)
{
    return preg_replace('/(linkText)/i', '<a href="/linkHref">$1</a>', $str, 1);
}

но нет никакой причины делать это, а не preg_replace(). Этот вызов действительно не сложнее, чем str_ireplace() вызов.

Последний параметр был добавлен для ограничения 1 вхождением.

0 голосов
/ 28 августа 2011
$text;
$word;
$replacement;
$text = substr_replace(
            $text, 
            $replacement,
            stripos($text, $word),
            strlen($word));

Должно работать

http://ideone.com/iIKbV

0 голосов
/ 28 августа 2011

PHP - это язык программирования.Используйте это как инструмент.Например, функции, которые поставляются с PHP, не охватывают все ваши базы.Однако вы можете объединить существующие функции в новую функцию.Это работает очень хорошо.

Суть в том, что вы пишете себе функцию с отсутствующей функциональностью (вы можете изменить внутреннюю часть функции позже, вам нужно только позаботиться о том, чтобы она работала точно так же, как раньше).

Это примерная функция, которая фактически выполняет то, что вы ищете, используя stripos и substr_replace ( Демо ):

function str_ireplace_once($search, $replace, $subject, &$count = 0)
{
    $pos = stripos($subject, $search);
    if (false === $pos)
        return $subject;

    $count = 1;
    return substr_replace($subject, $replace, $pos, strlen($search));
}

И нене делайте никаких предположений о скорости, если только это не действительно проблема для вас.Но перестаньте гадать, есть ли это или нет.Сначала решите свои проблемы, не создавайте дополнительных на ровном месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...