私は特殊な文字のいくつかのジャンクアップデータをクリーニングしようとしていますが、いくつかはまだ通過します。以前は正規表現スニペットが見つかりましたが、アスタリスクのような文字は削除されません。Regexがデータ内の文字を置き換えます。
は$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文字の長さのタイトルを作成し、句読点に止まらずにスペースを切り詰める(単語全体をそのまま残す)ことです。これは私が問題を抱えている部分です。
いくつかのタイトルがまだ最初のタイトルも*
年代を持つべきではない、とセクションは、例えば、HOW TO MAKE...
あるべきとき、*****************
または** HOW TO MAKE $$$$$$ BLOGGING **
として出てきます。
文字列の切り詰めにワードラップを使用することはどうですか? – Lekensteyn
私はタイトルに改行を追加したくないだけで、それを切り捨てます。それは機能がそれを打破するように聞こえる? – Kevin
あなたの正規表現は私にはうまく見えます。 'preg_replace'を呼び出した直後に' $ clean_title'を調べてみましたか?私は問題があなたのPHPにあると思うが、私はかなりの時間でPHPを使用していないので、私は専門家ではない。 –