现在有一个字符串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>
// 截取字符串
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>
$str='<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮...</a>';
preg_match('/<a href="(.*)">(.*?)<\/a>/',$str,$matches);
print_r($matches);
<?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;
}?>
感觉有点复杂,能不能结合上面的函数进行修改了?
传入的字符串:
<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>返回的字符串
<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮...</a>
能不能结合上面的函数进行修改呢?传入的字符串:
<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮澳門非常婚禮澳門非常婚禮澳門非常婚禮</a>返回的字符串
<a href="/dev/index.php/wedding-content/649-very-wedding">澳門非常婚禮...</a>
<?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;
}?>
$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>
$a=limit_chars($str, $number); //调用得到截取后的title
echo preg_replace('/(<a[^>]*>)(.*)(<\/a>)/s',"$1$a$3",$str);