如何从php中的字符串中提取带分隔符的子字符串

时间:2016-11-03 22:49:30

标签: php

我想从包含分隔符的字符串中删除子字符串。

示例:

$string = "Hi, I want to buy an [apple] and a [banana].";

如何从这个字符串和数组中获取“apple”和“banana”?字符串的其他部分“嗨,我想在另一个数组中购买”和“和”。

如果这个问题已经得到解答,我道歉。我搜索了这个网站,找不到任何可以帮助我的东西。每种情况都有点不同。

3 个答案:

答案 0 :(得分:1)

您可以使用preg_split()

<?php
$pattern = '/[\[\]]/';  // Split on either [ or ]
$string = "Hi, I want to buy an [apple] and a [banana].";
echo print_r(preg_split($pattern, $string), true);

输出:

Array
(
    [0] => Hi, I want to buy an
    [1] => apple
    [2] =>  and a
    [3] => banana
    [4] => .
)

如果您愿意和/或忽略最后一个完整停止,您可以修剪空白。

答案 1 :(得分:0)

preg_match_all('(?<=\[)([a-z])*(?=\])', $string, $matches);

应该做你想做的事。 $matches将是每个匹配的数组。

答案 2 :(得分:0)

我假设您希望将单词作为数组中的值:

$words  = explode(' ', $string);
$result = preg_grep('/\[[^\]]+\]/', $words);
$others = array_diff($words, $result);
  • 在空格
  • 上使用explode()创建单词数组
  • 使用正则表达式使用[somethings]
  • 查找preg_grep()
  • 使用[somethings]查找所有单词和array_diff()的区别,这将是字符串的“其他”部分