我试图把字符串分成两半,它不应该在一个单词的中间分开.
到目前为止,我想出了以下99%的工作:
$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));
Run Code Online (Sandbox Code Playgroud)
这确实有效,根据字符串中的单词数正确地将任意字符串拆分为一半.但是,它正在删除字符串中的任何符号,例如,对于上面的示例,它将输出:
The Quick Brown Fox Jumped
Over The Lazy Dog
Run Code Online (Sandbox Code Playgroud)
我需要在分割后保留所有符号,如:和/在字符串中.我不明白为什么当前代码正在删除符号...如果您可以提供替代方法或修复此方法不删除符号,将不胜感激:)
Jef*_*ert 20
在查看你的示例输出时,我注意到我们的所有示例都已关闭,如果字符串的中间位于单词内部而不是给出更多内容,则我们给予string1更少.
例如中间The Quick : Brown Fox Jumped Over The Lazy / Dog是The Quick : Brown Fox Ju它是在一个字的中间,在该第一实施例给出了字符串2分割字; 最下面的例子给string1分词.
在分词上给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"
Run Code Online (Sandbox Code Playgroud)
在拆分字上给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"
Run Code Online (Sandbox Code Playgroud)
function split_half($string, $center = 0.4) {
$length2 = strlen($string) * $center;
$tmp = explode(' ', $string);
$index = 0;
$result = Array('', '');
foreach($tmp as $word) {
if(!$index && strlen($result[0]) > $length2) $index++;
$result[$index] .= $word.' ';
}
return $result;
}
Run Code Online (Sandbox Code Playgroud)
演示:http://codepad.viper-7.com/I58gcI
| 归档时间: |
|
| 查看次数: |
10765 次 |
| 最近记录: |