PHP换行符,小写字母符合大写字母

时间:2014-03-18 05:02:22

标签: php arrays explode

我有一个字符串,如下所示:

$string = "New video gameSome TV showAnother item";

我希望能够单独访问每个项目,以获得类似以下输出的内容:

New video game
Some TV show
Another item

如何在字符串或其他随机字符中的每个项目名称之后添加\ n,以后我可以将其分解为数组以单独访问字符串中的每个项目?

5 个答案:

答案 0 :(得分:3)

$string = preg_replace('/([a-z])([A-Z])/', "\\1\n\\2", $string);

回答您的评论,以包括以右括号或数字结尾的单词:

$string = preg_replace('/([a-z0-9\)])([A-Z])/', "\\1\n\\2", $string);

答案 1 :(得分:1)

我们(人类)可以区分这些项目,并根据它对我们的意义来识别彼此。但必须给计算机一个标准来做所有这些。

您需要通过简单地添加分隔符(逗号或冒号)来更改存储字符串的方式,并且不要指望计算机在此处阅读我们的想法。

答案 2 :(得分:0)

怎么样,

$string = "New video game/nSome TV show/nAnother item";

$string = explode("/n", $string);

print_r( $string);

答案 3 :(得分:0)

这不是尝试分隔项目的好方法。正如已经多次说过的那样,保存自己头痛并使用分隔符,这就是说,这会从给定的字符串返回desied结果。

$my_string = "New video gameSome TV showAnother item";
preg_match_all('/[A-Z]{1}([A-Z]{2,5}|[a-z\s])+/',$my_string, $matches);
var_dump($matches);

但是我确定你会发现更多的案例,如果你继续使用那些没有意义的模式,那么这些案例并不起作用。

[A-Z]{1} - find one uppercase letter
()+ - next pattern one or more times
[A-Z]{2,5}|a-z\s - 2 -5  uppercase letters(for acronyms) OR lowercase letters and spaces

这就是你在这里要求的。祝你好运不要破坏它。

var dump看起来 - 更别提第二部分了。

array(2) { [0]=> array(3) { [0]=> string(14) "New video game" [1]=> string(12) "Some TV show" [2]=> string(12) "Another item" } [1]=> array(3) { [0]=> string(1) "e" [1]=> string(1) "w" [2]=> string(1) "m" } } 

答案 4 :(得分:0)

我做了一些比较,有效地寻找大写字母,我只考虑在第一个字符之后的大写字母,而不是在另一个大写字母或空格之前。

<?php

$s = "New video gameSome TV showAnother item";
$i = 0;
$j = 0;
$phrases = array();
$cap_bit = pow(2, 5);
while($j < strlen($s))
{
    $n = ord($s{$j});

    if(($n & $cap_bit) == 0 && 
       ($j == 0 || (
            ord($s{$j - 1}) & $cap_bit) > 0 && 
            $s{$j - 1} != ' ') && 
       $j > 0)
    {
        $phrases[] = substr($s, $i, $j - $i);
        $i = $j;
    }

    $j++;
}


$phrases[] = substr($s, $i);
var_dump($phrases);

结果:

array(3) {
  [0]=>
  string(14) "New video game"
  [1]=>
  string(12) "Some TV show"
  [2]=>
  string(12) "Another item"
}