Сократите абзац до нескольких слов, а не символов [duplicate]

Этот строковый формат должен сделать ваш день: «0. ##############################». Имейте в виду, что десятичные знаки могут содержать не более 29 значащих цифр.

Примеры:

? (1000000.00000000000050000000000m).ToString("0.#############################")
-> 1000000.0000000000005

? (1000000.00000000000050000000001m).ToString("0.#############################")
-> 1000000.0000000000005

? (1000000.0000000000005000000001m).ToString("0.#############################")
-> 1000000.0000000000005000000001

? (9223372036854775807.0000000001m).ToString("0.#############################")
-> 9223372036854775807

? (9223372036854775807.000000001m).ToString("0.#############################")
-> 9223372036854775807.000000001
10
задан Mithun Sreedharan 26 May 2010 в 19:24
поделиться

4 ответа

$pieces = explode(" ", $inputstring);
$first_part = implode(" ", array_splice($pieces, 0, 5));
$other_part = implode(" ", array_splice($pieces, 5));

explode разбивает исходную строку на массив слов, array_splice позволяет получить определенные диапазоны этих слов, а затем implode объединяет диапазоны обратно в одну строку.

38
ответ дан Amber 21 August 2018 в 15:11
поделиться
  • 1
    Используйте explode(" ", $inputstring, 6) для сохранения взрыва, когда вам это не нужно. – salathe 26 May 2010 в 20:16
<?php
$words = explode(" ", $string);
$first = join(" ", array_slice($words, 0, 5));
$rest = join(" ", array_slice($words, 5));
5
ответ дан Kenaniah 21 August 2018 в 15:11
поделиться

Сильно зависит от того, что вы определяете как слово, но это кивок в другом направлении, вдали от обычного explode -ing.

$phrase = "All the ancient classic fairy tales have always been scary and dark.";
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 5));

Дает

Вся древняя классическая фея


Еще одна альтернатива, поскольку все любят регулярное выражение, было бы чем-то вроде:

preg_match('/^(?>\S+\s*){1,5}/', $phrase, $match);
echo rtrim($match[0]);
16
ответ дан salathe 21 August 2018 в 15:11
поделиться
implode(' ', array_slice(explode(' ', $contents), 0, 5));

Примечание: здесь, наконец, вы можете увидеть 0, 10 он будет печатать от стартового слова до 10-го слова, поэтому вы можете исправить, как вы хотите начать с слова на общее число слов.

0
ответ дан Shiv Singh 21 August 2018 в 15:11
поделиться
Другие вопросы по тегам:

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