$text=" <name >PPP </name >";
echo strip_tags($text);

解决方案 »

  1.   

    " <name >PPP </name >"这样的样式 
    是指都是<name > 和</name > ?
    还是都是html标记?
    还是可以是xml自定义标记?
    name后面是不是一定有空格?
    PPP后面是不是一定有空格?
    .....
    说题目要说清楚,
    说不清楚,
    就算别人给了答案能解, 也不会是最优解
      

  2.   

    $str = "<name>PPP</name><name>bbb</name>";preg_match_all("/<name>(.*?)<\/name>/",$str,$arrStr);print_r($arrStr);
      

  3.   

    如果是html标记,那么一楼的就是正解。如果是自定义标记,一般都是用正则提取,但是你自定义的标记需要有一定的规律,就如楼上说的那样,最好明确给出。
      

  4.   

    以上给的方法正确,但最准确通用的方法还是逐个取字符,如果<name ><name >PPP </name ></name >嵌套的话正则就很难取准确。
      

  5.   

    我的意思是一个字符串,里面的字符串大多是这样 "<name >PPP </name > <version>2.0</version>"
    现在我想根据这样的特征,把PPP,2.0这样的提取出来.jom_ch 朋友的方法我试过了,好像不行.
      

  6.   

    $str = "<name  >PPP  </name  >  <version >2.0 </version >"; 
    preg_match("/<[^>.]*>(.*)<\/[^>.]*>/",$str,$m); 
    for($i=1;$i<=count($m);$i++){
    echo $m[$i];
    }
      

  7.   

    preg_match("/ <[^ >.]* >(.*) <\/[^ >.]* >/",$str,$m); 
    应该用[^<>]+
      

  8.   

    <name   >PPP   </name   >
    ==============================<>  里 name 的前后到底有没有空格,如果有,是多少个
      

  9.   

    $str = "<name  >PPP     </name   >  <version  >2.0</version  >"; preg_match("/<[^ >].+\s*>(.*\s*)<\/[^ >].+\s*>/i",$str,$m);   print_r($m[0]);
    试试这个
      

  10.   

    我想通过关键词来截取然后放进不同的变量里
    比如先取得PPP
    然后再去2.0放进另一个变量,而不是把整个<>都去掉.
    即一个一个的截取.
      

  11.   

    难道楼主是这个意思?$str = "<name  >PPP  </name  >  <version >2.0 </version >"; 
    preg_match_all("/<([^>]+)>([^<]*)<\/[^>]+>/",$str,$m,PREG_SET_ORDER); 
    for($i=0;$i<count($m);$i++){
    $tmp = trim($m[$i][1]);
    $$tmp = $m[$i][2];
    }
    echo "用变量输出:";
    echo $name;
    echo $version;
      

  12.   

    比如在ASP我可以之样截取我要的字符串
    strBegin="<Program_Name>"
    start=Newstring(wstr,strBegin)
    over=Newstring(wstr,"</Program_Name>")
    Program_Name=mid(wstr,start,over-start)
    Program_Name=right(Program_Name,len(Program_Name)-len(strBegin))我只想要类似上面的这样的方法.
      

  13.   

    给一段完整的字符串吧,php处理这种问题很简单,不知道为什么搞那么复杂,把你的意思表达清楚, 你要取得的文字的tagName是固定的还是随机的,是不是只要满足<tagName>text</tagName>这种形式的都把text取出来?取出来是不是 要存入$tagName这样的变量
      

  14.   

    我把我的意思讲清楚,字符串如何
     <program_name>PPP</program_name> <os>win98</os> <version>2.0</version>能不能有一个方法让
    $str1=PPP
    $str2=win98
    $str3=2.0
      

  15.   


    <?php
    $str = '<program_name >PPP </program_name >  <os >win98 </os >  <version >2.0 </version > ';
    preg_match_all('/<([\s\S]*)>(?:.*?)<\/\\1>/i',$str,$m);
    print_r($m[0]);
    ?>
      

  16.   

    楼上的,你能让
    $str1=PPP 
    $str2=win98 
    $str3=2.0 
    我一个一个的取值,因为中间的<os >win98 </os >我可能不需要,所以我可能也只要
    $str1=PPP 
    $str3=2.0
      

  17.   

    正则取出来所有值放在数组中,取舍就看你的操作了.<?php
    $str = '<program_name >PPP </program_name >  <os >win98 </os >  <version >2.0 </version > ';
    preg_match_all('/<([\s\S]*)>(?:.*?)<\/\\1>/i',$str,$m);
    foreach($m[0] as $k=>$v)
    {
    $s[trim($m[1][$k])] = $v;
    }
    print_r($s);
    ?>
    当然像你那样用字符串函数处理也可以,strpos,substr....
      

  18.   

    给你来个另类点的,
    <?php
    $str = '<program_name >PPP </program_name >  <os >win98 </os >  <version >2.0 </version > ';
    function myreplace($matches) {
    static $i = 0;
    if (trim($matches[1])) {
    $i++;
    global ${"str" . $i};
    ${"str" . $i} = $matches[1];
    }
    }
    preg_replace_callback('/>([^<>]+)</', 'myreplace', $str);
    echo $str1;
    echo $str2;
    echo $str3;
    ?>
      

  19.   

    $str = " <name >PPP </name > <name >bbb </name >"; preg_match_all("/ <name >(.*?) <\/name >/",$str,$arrStr); print_r($arrStr);正解
      

  20.   

    <([\s\S]*)>(?:.*?)<\/\\1>
    ------------------
    (?:.*?)<\/\\1>什末意思?
      

  21.   

    湖水清澈(@fix my lover@)的方法不是挺好吗?还有什么不行的?