我正在尝试从帖子博客中获取子字符串(大约250个字符),并且需要防止子字符串的末尾位于标记内。即使子字符串大于250个字符,我也希望包含这样的标记。
这是一个例子:
假设我们有一个像这样的帖子:
Defensadeltiítulo:“Es un re reto,un gran reto,y creo que en el Real Madrid tenemos la oportunidad de volver a ganarla.Sabemos que esunacomparticiónmuycomplicada,pero nadaesfácil,asíquelo vamos a intentar Iremos partido a partido y primero pensar en la fase de grupos,porque enmiophanióntenemosun grupocomplicado.Veremoscómosedesarrollalacompreetición.Piensoen positivo:es posible volver a ganarla“.Su gran temporada pasada:”Entérminosde títuloscreoque fue posiblemente la mejor temporada de mi carrera。
<img src="http://www.domain.com/uploads/imag1.png" />
Tras ganar la UEFA冠军联赛,ganar la EURO conmiselección fue el broche de oro paraunañoextraordinario。 En cuanto一个trofeos fue la mejor,nunca he tenido una temporada mejor,tanto colectiva como individualmente,porque fuielmáximogoleadoren la Champions League y tuve un buen Campeonato de Europa。 Ademáspudimosganar los dostítulosmásimportantes,por lo que fue un excelente curso para MI”。
Jugar contra el Sporting:“Es un partido especial,es un equipo 特殊。哟queríavolverjugar ante el Sporting,porque creo que tienen un buen equipo,tienen un buen entrenadoryseráotromomento 特别是en mi vida。 Ya he jugado ante el Sporting en la Champions 联赛,对阵本菲卡比坦尼和波尔图。 Jugar otra vez ante el Sporting es un privilegioparamí“。
....一旦应用了子串我得到了这个:
Defensadeltiítulo:“Es un re reto,un gran reto,y creo que en el Real Madrid tenemos la oportunidad de volver a ganarla.Sabemos que es una 竞争对手muy complicada,pero nadaesfácil,asíquelo vamos a intentar。 Iremos partido a partido y primero pensar en la fase de grupos,porque enmicopióntenemosun grupo complicado。 Veremoscómo se desarrollalacomparativeición。 Pienso en positivo:es posible volver a ganarla“.Su gran temporada pasada:”entérminosdetítuloscreoque fue posiblemente la mejor temporada de mi carrera。
<img src="http://www.dom
如何阻止'substring'切割img标签?
任何帮助?
答案 0 :(得分:0)
我想你想要这段代码
$result = substr(string,0,250);
$re = "/\\<(.)+\\>/m";
preg_match_all($re, $result, $matches);
if(empty($matches)){
//no tag contain in string
echo $result;
}else{
preg_match('/\<[a-z]+\>/gm', $string, $sub_matches, PREG_OFFSET_CAPTURE);
$sub_result = substr(string,0, $sub_matches[0][1]);
echo $sub_result.$matches[0];
}
上面的代码会检查最多250个字符,如果包含然后匹配返回结果和匹配返回$ matches [0]返回标记之间的字符串并且还附加起始字符串。