【问题标题】:explode string multiple instances分解字符串多个实例
【发布时间】:2021-12-31 19:15:33
【问题描述】:

我有以下字符串;

$string = '[PAGE][TITLE]Navigation Link 1[TITLE]Content Here[PAGE]';

我想要的输出是;

<div id="navigation Link 1">Content Here</div>

我以为我已经做到了;

        $array = explode('[PAGE]', $string);
        $result = $array[0];
        for ($i = 1; $i < sizeof($array); $i++) {
            $title = explode('[TITLE]', $array[$i]);
            for ($i = 1; $i < sizeof($title); $i++) {
                $result .= $i % 2 ? '<div id="' . $title[$i] . '">' . $array[$i] . '</div>' : $array[$i];
            }
        }

如果有人可以看看这个,那就太好了。这也必须与多个实例一起使用。 例如;

$string = '[PAGE][TITLE]Navigation Link 1[TITLE]Content Here[PAGE] some text [PAGE][TITLE]Navigation Link 2[TITLE]Content Here[PAGE]';

感谢您查看此内容并提供任何帮助。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    您可以使用preg_match_all() 来获取所需的内容:

    
    $string = '[PAGE][TITLE]Navigation Link 1[TITLE]Content1 Here[PAGE] some text [PAGE][TITLE]Navigation Link 2[TITLE]Content2 Here[PAGE]';
    
    $html = '';
    if (preg_match_all('~\[PAGE\]\[TITLE\](.*?)\[TITLE\]([^[.]*)~',$string,$matches)) {
        foreach ($matches[0] as $k => $match) {
            $html .= '<div id="'.htmlentities($matches[1][$k]).'">'.htmlentities($matches[2][$k]).'</div>' . "\n";
        }
    }
    
    echo $html;
    

    输出:

    <div id="Navigation Link 1">Content1 Here</div>
    <div id="Navigation Link 2">Content2 Here</div>
    

    【讨论】:

    • 非常感谢!正是我所追求的,如果字符串看起来像这样$string = 'random text before [PAGE][TITLE]Navigation Link 1[TITLE]Content1 Here[PAGE] some text [PAGE][TITLE]Navigation Link 2[TITLE]Content2 Here[PAGE] random text after';,您是否也可以使用此方法
    • 因为我使用了preg_match_all,所以我建议之前拆分你的字符串,使用strpos、strrpos和substr和[PAGE]。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多