我正在尝试清理一些特殊字符的垃圾数据(允许一些),但有些仍然可以通过。我之前发现了一个正则表达式片段,但没有删除一些字符,比如星号。
$clean_body = $raw_text;
$clean_title = preg_replace("/[^!&\/A-Za-z0-9_ ]/","", $clean_body);
$clean_title = substr($clean_title, 0, 64);
$clean_body = nl2br($clean_body);
if ($nid) {
$node = node_load($nid);
unset($node->field_category);
} else {
$node = new stdClass();
$node->type = 'article';
node_object_prepare($node);
}
$split_title = str_split($clean_title);
foreach ($split_title as $key => $character) {
if ($key > 15) {
if ($character == ' ' && !preg_match("/[^!&\/,.-]/", $split_title[$key - 1])) {
$node->title = html_entity_decode(substr(strip_tags($clean_title), 0, $key - 1)) . '...';
}
}
}
第一部分尝试清除原始文本中不是正常标点符号或字母数字的任何内容。然后,我将标题拆分为一个数组并寻找一个空格。我想要做的是创建一个至少 15 个字符长的标题,并在空格处截断(保持整个单词完整)而不在标点符号处停止。这是我遇到麻烦的部分。
例如,当第一个标题甚至不应该有's 时,某些标题仍然显示为*****************
or ,并且该部分应该是。** HOW TO MAKE $$$$$$ BLOGGING **
*
HOW TO MAKE...