开发者

Get text between two tags

开发者 https://www.devze.com 2023-03-17 08:41 出处:网络
How can I get the value from the following tags: {desc=1} This is a description {/desc} The number in the {开发者_运维百科desc=1} is changing. I want to get the value as well.

How can I get the value from the following tags:

{desc=1}
This is a description
{/desc}

The number in the {开发者_运维百科desc=1} is changing. I want to get the value as well.

UPDATED:

also possible to be more desc in the string, for example

{desc=1}
    This is a description
{/desc} 
{desc=2}
    other description
{/desc}
...


This will capture everything you want.

$data = <<<EOT
{desc=1}
    This is a description
{/desc}
{desc=2}
    other description
{/desc}
EOT;

preg_match_all('#{desc=(\d+)}(.*?){/desc}#s', $data, $matches);

var_dump($matches);

Output:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(44) "{desc=1}
    This is a description
{/desc}"
    [1]=>
    string(40) "{desc=2}
    other description
{/desc}"
  }
  [1]=>
  array(2) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
  }
  [2]=>
  array(2) {
    [0]=>
    string(29) "
    This is a description
"
    [1]=>
    string(25) "
    other description
"
  }
}


Another very simple way is we can create a simple function that can be invoked at any time.

<?php
  // Create the Function to get the string
  function GetStringBetween ($string, $start, $finish) {
  $string = " ".$string;
  $position = strpos($string, $start);
  if ($position == 0) return "";
  $position += strlen($start);
  $length = strpos($string, $finish, $position) - $position;
  return substr($string, $position, $length);
  }
?>

and here's an example usage for your question

$string1="
{desc=1}
 This is a description
{/desc}";

$string2="
{desc=1}
 This is a description
{/desc}
{desc=2}
  other description
{/desc}";

echo GetStringBetween ($string1, "{desc=1}", "{/desc}");
echo GetStringBetween ($string2, "{desc=1}", "{/desc}");
echo GetStringBetween ($string2, "{desc=2}", "{/desc}");

For more detail please read http://codetutorial.com/howto/how-to-get-of-everything-string-between-two-tag-or-two-strings.


try this

function getInbetweenStrings($start, $end, $str){
    $matches = array();
    $regex = "/$start([a-zA-Z0-9_]*)$end/";
    preg_match_all($regex, $str, $matches);
    return $matches[1];
}

$str = "{attr1}/{attr2}/{attr3}";
$str_arr = getInbetweenStrings('{', '}', $str);

print_r($str_arr);

in above example { and } are the tags, in-between them the string is getting extracted.

0

精彩评论

暂无评论...
验证码 换一张
取 消