我想从包含分隔符的字符串中删除子字符串。
示例:
$string = "Hi, I want to buy an [apple] and a [banana].";
如何从这个字符串和数组中获取“apple”和“banana”?字符串的其他部分“嗨,我想在另一个数组中购买”和“和”。
如果这个问题已经得到解答,我道歉。我搜索了这个网站,找不到任何可以帮助我的东西。每种情况都有点不同。
答案 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()
的区别,这将是字符串的“其他”部分