PHP获取标记之间的文本+;标签本身

PHP获取标记之间的文本+;标签本身,php,html,parsing,Php,Html,Parsing,我想获取[tag]和[/tag]之间的所有文本,包括标签 所以这句话 猫在公园向狗问好。 使用此函数 function get_string_between($string, $start, $end){ $string = ' ' . $string; $ini = strpos($string, $start); if ($ini == 0) return ''; $ini += strlen($start); $len = strpos($strin

我想获取[tag]和[/tag]之间的所有文本,包括标签

所以这句话

猫在公园向狗问好。

使用此函数

function get_string_between($string, $start, $end){
    $string = ' ' . $string;
    $ini = strpos($string, $start);
    if ($ini == 0) return '';
    $ini += strlen($start);
    $len = strpos($string, $end, $ini) - $ini;
    return substr($string, $ini, $len);
}
我可以返回标签之间的文本。但我也想要标签。基本上,我想扫描我的文本标签,以确保有一个开始和结束标签。然后允许我编辑内容和标签。因此,如果文本周围同时存在[tag]和[/tag],则将文本周围的[tag]和[/tag]更改为


我可以用str_replace来做,但我不知道如何组合搜索打开和结束标记,并替换它们。

试试下面的代码,基本上你需要检测开始标记和结束标记,substr是否包含你想要的标记

function get_string_between($string, $start, $end){
    $posStart = strpos($string, $start);
    if (!($posStart !== false)) return '';
    $posEnd = strpos($string, $end);
    if (!($posEnd !== false)) return '';
    $len = strlen($end);
    return substr($string, $posStart, $posEnd - $posStart + $len);
}