1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/strings/functions/str-replace.xml
2024-04-04 13:20:55 +03:00

231 lines
8.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 464fbf0d12f89b1e723908780fb68acf667f5901 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.str-replace" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>str_replace</refname>
<refpurpose>Заменяет вхождения строки поиска строкой замены</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>array</type></type><methodname>str_replace</methodname>
<methodparam><type class="union"><type>array</type><type>string</type></type><parameter>search</parameter></methodparam>
<methodparam><type class="union"><type>array</type><type>string</type></type><parameter>replace</parameter></methodparam>
<methodparam><type class="union"><type>string</type><type>array</type></type><parameter>subject</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter role="reference">count</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Функция возвращает строку или массив, в котором заменила
вхождения <parameter>search</parameter> в <parameter>subject</parameter>
значением <parameter>replace</parameter>.
</para>
<para>
Замену текста на основе шаблона, а не фиксированной строки,
выполняют функцией <function>preg_replace</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Если параметры <parameter>search</parameter> и <parameter>replace</parameter>
массивы, функция <function>str_replace</function> возьмёт
значение из каждого массива для поиска и замены
во входной строке <parameter>subject</parameter>.
Если в массиве <parameter>replace</parameter> значений меньше, чем
в массиве <parameter>search</parameter>, функция заменит остальные
значения пустой строкой.
Функция заменит строкой замены каждое значение
массива <parameter>search</parameter>, если параметр
<parameter>search</parameter> — массив, а параметр
<parameter>replace</parameter> — строка. Обратное не имело бы смысла.
</para>
<para>
Если параметры <parameter>search</parameter>
или <parameter>replace</parameter> — массивы, функция обработает
элементы массивов от первого к последнему.
</para>
<para>
<variablelist>
<varlistentry>
<term><parameter>search</parameter></term>
<listitem>
<para>
Искомое значение, которое знают также как <emphasis>needle</emphasis>:
иголку, которую требуется найти в стоге сена. В параметр передают массив
значений, когда требуется найти несколько «иголок» одновременно.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>replace</parameter></term>
<listitem>
<para>
Значение замены, которым функция заменит значения
<parameter>search</parameter>, которые найдёт.
В параметр передают массив значений, когда требуется выполнить несколько замен.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>subject</parameter></term>
<listitem>
<para>
Строка или массив для поиска и замены,
которые знают также как <emphasis>haystack</emphasis>: стог сена,
в котором требуется найти иголку.
</para>
<para>
Функция выполнит поиск и замену с каждым элементом массива
<parameter>subject</parameter>, если параметр <parameter>subject</parameter>
массив, и результат тоже будет массивом.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>count</parameter></term>
<listitem>
<para>
Функция установит для этого параметра количество замен, если аргумент передали.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает строку или массив с заменёнными значениями.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Примеры использования функции <function>str_replace</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Даёт: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
// Даёт: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
// Даёт: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase);
// Даёт: 2
$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>
Примеры неочевидного поведения функции <function>str_replace</function>
</title>
<programlisting role="php">
<![CDATA[
<?php
// Порядок замены
$str = "Строка 1\nСтрока 2\rСтрока 3\r\nСтрока 4\n";
$order = array("\r\n", "\n", "\r");
$replace = '<br />';
// Сначала обработаем последовательности символов \r\n, чтобы значения замены не появились дважды
echo $newstr = str_replace($order, $replace, $str);
// Выводит F, поскольку A заменяется на B, затем B на C и так далее...
// Наконец E заменяется на F, поскольку функция заменяет значения слева направо
$search = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);
// Выводит: яблорехкорех орех по той же причине
$letters = array('я', 'о');
$fruit = array('яблоко', 'орех');
$text = 'я о';
$output = str_replace($letters, $fruit, $text);
echo $output;
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.bin-safe;
<caution>
<title>Замечание о порядке замены</title>
<para>
При множественных заменах функция <function>str_replace</function> заменит значение,
которое вставила на предыдущем шаге, очередным значением, поскольку
заменяет значения слева направо.
Примеры на этой странице показывают порядок замены.
</para>
</caution>
<note>
<para>
Функция чувствительна к регистру. Замену без учёта регистра
выполняет функция <function>str_ireplace</function>.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>str_ireplace</function></member>
<member><function>substr_replace</function></member>
<member><function>preg_replace</function></member>
<member><function>strtr</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->