@OneTwoThreeFourFive

Вопрос про strpos php?

Здравствуйте, использую функцию strpos()для поиска нужных слов в строке.
Задача такая:
Есть некоторый текст (несколько предложений) и в нём надо найти несколько слов и заменить их. Я делаю так:
$text = 'Lorem ispum...';
if ( strpos( $text, 'word1' ) !== false ) {
   $text = str_replace('word1', 'word-replace1', $text);
}

if ( strpos( $text, 'word2' ) !== false ) {
   $text = str_replace('word2', 'word-replace2', $text);
}

if ( strpos( $text, 'word3' ) !== false ) {
   $text = str_replace('word3', 'word-replace3', $text);
}

echo $text;


Вопрос в том, есть ли смысл проверять на наличие слова в тексте? Просто я стараюсь, чтобы код не выполнялся, если не нужен (если нет слова в предложении). И чтобы код был максимально коротким. И вот что лучше, пусть будет короче, но будет выполняться в пустую (нет слова в тексте) или длиннее, но с проверками?

Скажите как правильно?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 2
@dthpth
Погромист
В правильном направлении мыслите.
Чтобы ответить, нужно посмотреть на реализацию методов `strpos` и `str_replace` - велика вероятность, что второй сначала выполняет то же самое, что и первый. В таком случае, используя дополнительную проверку в своём коде, вы не экономите, а выполняете одинаковый код дважды.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
По большому счёту, от ваших "оптимизаций" толку никакого, потому что str_replace всё равно сам ищет совпадение и если его там нет, вызов равносилен вызову strpos.
А вот если совпадение есть, то логика поиска выполняется дважды.

А ещё вы на спичках экономить пытаетесь.

$text = str_replace(
  ['word1', 'word2', 'word3'],
  ['word-replace1', 'word-replace2', 'word-replace3'],
  $text
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы