现在有一个字符串url,我想截取标题的长度,然后再返回这个字符串url,最主要是正则表达式不会写啊!帮帮忙!Thx!<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>
// 截取字符串
function limit_chars($str, $number){
$str = strip_tags($str);

if(mb_strlen($str,'UTF8')<= $number){
return $str;
}else{
return mb_substr($str,0,$number,'utf-8').'...';
}
}例如返回字符串url<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮...</a>

解决方案 »

  1.   

    <?php
    $str='<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮...</a>';
    preg_match('/<a href="(.*)">(.*?)<\/a>/',$str,$matches);
    print_r($matches);
      

  2.   

    试试
    <?php
    header("Content-type:text/html;charset=utf-8");
    /** Default charset **/
    define('__CHARSET__','UTF-8'); 
    /** Display how many characters **/
    define('__LENFORSHOW',15);
    $str = <<<html
    may be this would be cuted?<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>hello just ignore me ok?<div><b>may i pass this killing:(</b></div>i'm the man                                                                 
    html;echo htmlspecialchars(preg_replace_callback('#(?=[^>]*(?=<|$))[^<>]*#',"strcut",$str));function strcut($match)
    {
            if(empty($match[0])) return ''; 
            $len = mb_strlen($match[0],__CHARSET__);
            $cuted = mb_substr($match[0],0,__LENFORSHOW,__CHARSET__);           
            if($len > __LENFORSHOW) $cuted .= '...';
            return $cuted;
    }?>
      

  3.   

    '#(?=[^>]*(?=<|$))[^<>]*#s',忘了加s修正符
      

  4.   


    感觉有点复杂,能不能结合上面的函数进行修改了?
    传入的字符串:
    <a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>返回的字符串
    <a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮...</a>
      

  5.   


    能不能结合上面的函数进行修改呢?传入的字符串:
    <a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>返回的字符串
    <a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮...</a>
      

  6.   

    你配置下啊代码已经特意写得很直白了,这还得帮你改...
    <?php
    header("Content-type:text/html;charset=utf-8");
    /** Default charset 默认编码**/ 
    define('__CHARSET__','UTF-8'); 
    /** Display how many characters 显示多少个字符**/ 
    define('__LENFORSHOW',6);      
    $str = <<<html                 
    <a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>
    html;
    //htmlspecialchars是为了你看得到结果                                                                                                        
    echo htmlspecialchars(preg_replace_callback('#(?=[^>]*(?=<|$))[^<>]*#',"strcut",$str));function strcut($match)
    {
            if(empty($match[0])) return '';
            $len = mb_strlen($match[0],__CHARSET__);
            $cuted = mb_substr($match[0],0,__LENFORSHOW,__CHARSET__);       
            if($len > __LENFORSHOW) $cuted .= '...'; 
            return $cuted;
    }?>
      

  7.   

    这样够简单了吧<?php
    $str='<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮...</a>';
    echo preg_replace('/(<a[^>]*>.{12}).*(<\/a>)/','$1...$2',$str);
    输出 <a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮...</a>
      

  8.   

    $str='<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>';
    $a=limit_chars($str, $number);  //调用得到截取后的title
    echo preg_replace('/(<a[^>]*>)(.*)(<\/a>)/s',"$1$a$3",$str);