【问题标题】:Separate each alphabet by using preg_match PHP使用 preg_match PHP 分隔每个字母
【发布时间】:2014-04-17 12:30:23
【问题描述】:

我知道这是一个初学者级别的问题,但我被困在这里,我需要帮助。

我想将每个字母表存储在一个数组中。 (只有字母不是整数)

让我告诉你我之前使用的代码

$str = "ab c45 d123ef";
preg_match_all('/./us', $str, $ar);
echo '<pre>';
print_r($ar);

它的输出

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] =>  
            [3] => c
            [4] => 4
            [5] => 5
            [6] =>  
            [7] => d
            [8] => 1
            [9] => 2
            [10] => 3
            [11] => e
            [12] => f
        )

)

但它也分隔整数.​​.....我必须在 preg_match 表达式中更改,我想要这个输出。

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] =>  
            [3] => c
            [4] => 45
            [5] =>  
            [6] => d
            [7] => 123
            [8] => e
            [9] => f
        )

)

【问题讨论】:

  • 空格不是字母,你为什么要匹配它们?
  • 我也想分隔空格...但是如果有任何整数它不应该分开..这可能吗..? :(
  • preg_match_all('/\d+|./us', $str, $ar);
  • 您还要保留标点符号吗? . 匹配所有内容。
  • 为什么 45 之后的空格在您想要的输出中的单独项目中?

标签: php preg-match preg-match-all


【解决方案1】:
preg_match_all('/[\d.]+|./us', $str, $ar);

[\d.] 匹配一个数字或小数点,+ 匹配它们的序列之后的量词。

结果:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] =>  
            [3] => c
            [4] => 45
            [5] =>  
            [6] => d
            [7] => 123
            [8] => e
            [9] => f
        )

)

【讨论】:

  • 首先谢谢,太好了,它正在工作,但如果你能帮助我,只剩下一个小问题,如果我使用 45.125 它也会将它分开,例如:“45”“。” “125”,是否可以按顺序制作..再次感谢..
  • 查看更新后的答案。如果您了解 regexp 的基础知识,我认为如何添加它应该很明显。
【解决方案2】:

preg_split 的一种方式:

$result = preg_split('/(?=\pL)|(?<=\pL)/', $str, -1, PREG_SPLIT_NO_EMPTY);

你获得:

Array
(
    [0] => a
    [1] => b
    [2] =>  
    [3] => c
    [4] => 45 
    [5] => d
    [6] => 123
    [7] => e
    [8] => f
)

当前模式匹配两种位置,位置后跟字母(?=\pL),位置前跟字母(?&lt;=\pL)

【讨论】:

  • 你最好解释一下它是如何工作的。我非常了解正则表达式,这很令人困惑。此外,您在输出中缺少45 之后的空格。
  • 是的,如你所见,我正在写我的答案,我想把空格放在 45。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
相关资源
最近更新 更多