使用 PHP 将字符串分成两半(字识别)

2021-12-28 00:00:00 string split php

我正在尝试将字符串分成两半,它不应该在单词中间分开.

I'm trying to split strings in half, and it should not split in the middle of a word.

到目前为止,我想出了以下 99% 的工作:

So far I came up with the following which is 99% working :

$text = "The Quick : Brown Fox Jumped Over The Lazy / Dog";
$half = (int)ceil(count($words = str_word_count($text, 1)) / 2); 
$string1 = implode(' ', array_slice($words, 0, $half));
$string2 = implode(' ', array_slice($words, $half));

这确实有效,根据字符串中的单词数将任何字符串正确地分成两半.但是,它正在删除字符串中的任何符号,例如对于上面的示例,它将输出:

This does work, correctly splitting any string in half according to the number of words in the string. However, it is removing any symbols in the string, for example for the above example it would output :

The Quick Brown Fox Jumped
Over The Lazy Dog

我需要在拆分后保留字符串中的所有符号,例如 : 和/.我不明白为什么当前的代码要删除符号...如果您能提供替代方法或修复此方法以不删除符号,将不胜感激:)

I need to keep all the symbols like : and / in the string after being split. I don't understand why the current code is removing the symbols... If you can provide an alternative method or fix this method to not remove symbols, it would be greatly appreciated :)

推荐答案

在查看您的示例输出时,我注意到我们所有的示例都关闭了,如果字符串的中间在一个单词内,我们将减少给 string1然后给予更多.

Upon looking at your example output, I noticed all our examples are off, we're giving less to string1 if the middle of the string is inside a word rather then giving more.

例如The Quick : Brown Fox Jumped Over The Lazy/Dog的中间是The Quick : Brown Fox Ju,它在一个词的中间,这个第一个示例为 string2 提供了拆分词;下面的例子给出了 string1 的分割词.

For example the middle of The Quick : Brown Fox Jumped Over The Lazy / Dog is The Quick : Brown Fox Ju which is in the middle of a word, this first example gives string2 the split word; the bottom example gives string1 the split word.

在拆分词上给 string1 少

$text = "The Quick : Brown Fox Jumped Over The Lazy / Dog";

$middle = strrpos(substr($text, 0, floor(strlen($text) / 2)), ' ') + 1;

$string1 = substr($text, 0, $middle);  // "The Quick : Brown Fox "
$string2 = substr($text, $middle);  // "Jumped Over The Lazy / Dog"

在拆分词上给 string1 更多

$text = "The Quick : Brown Fox Jumped Over The Lazy / Dog";

$splitstring1 = substr($text, 0, floor(strlen($text) / 2));
$splitstring2 = substr($text, floor(strlen($text) / 2));

if (substr($splitstring1, 0, -1) != ' ' AND substr($splitstring2, 0, 1) != ' ')
{
    $middle = strlen($splitstring1) + strpos($splitstring2, ' ') + 1;
}
else
{
    $middle = strrpos(substr($text, 0, floor(strlen($text) / 2)), ' ') + 1;    
}

$string1 = substr($text, 0, $middle);  // "The Quick : Brown Fox Jumped "
$string2 = substr($text, $middle);  // "Over The Lazy / Dog"

相关文章