如何从字符串中删除单词并将该字符串分成数组

时间:2019-01-08 22:23:11

标签: php

我只希望每个选项只允许一个颜色词 从这里:

$colors = '< option value="black">black< /option>< option value="gold">gold< /option >';

对此:

$colors = 'black gold';

之后,我想将颜色输入到像这样的数组中 如何从字符串中删除单词并将该字符串划分为数组

像这样

Array
        (
            [0] => black 
            [1] => gold
        )

1 个答案:

答案 0 :(得分:3)

您可以使用preg_match_all提取值:

$colors = '< option value="black">black< /option>< option value="gold">gold< /option >';
preg_match_all('/value="([^"]+)"/', $colors, $matches);
print_r($matches[1]);

输出:

Array
    (
        [0] => black 
        [1] => gold
    )

Demo on 3v4l.org

您也可以使用PHP的DOMDocument类来执行此操作,尽管对于您的示例而言,它可能会显得过分杀手

$colors = '< option value="black">black< /option>< option value="gold">gold< /option >';
$doc = new DOMDocument();
$doc->loadHTML(str_replace('< ', '<', $colors));
$values = array();
$attributes = array();
foreach ($doc->getElementsByTagName('option') as $option) {
    $values[] = $option->nodeValue;
    $attributes[] = $option->getAttribute('value');
}
print_r($values);
print_r($attributes);

请注意,有必要通过删除<option之间的空格来更正HTML。这种方法的优点是可以轻松获取值或属性。输出:

Array
    (
        [0] => black 
        [1] => gold
    )
Array
    (
        [0] => black 
        [1] => gold
    )

Demo on 3v4l.org