3
このような機能を記述しようとしています。テキストを複数の列に分割し、出力は有効なhtmlでなければなりません。開かれていない(!!!)クローズタグもクローズドタグもありません。文字列を複数の列に分割(タグ認識)
function convert2columns($content = '', $columns = 2) {
$result = array();
$content = closetags($content);
$bodytext = array("$content");
$text = implode(",", $bodytext);
$length = strlen($text);
$length = ceil($length/$columns);
$words = explode(" ", $text);
$c = count($words);
$l = 0;
for ($i = 1; $i <= $columns; $i++) {
$new_string = "";
for ($g = $l; $g <= $c; $g++) {
if (strlen($new_string) <= $length || $i == $columns) {
if (in_array(substr(@$words[$g], $length - 1, 1), array(' ', '.', '!', '?')))
$new_string .= @$words[$g] . " ";
else {
$split = substr(@$words[$g], 0, $length - 1);
$lastSpace = strrpos($split, ' ');
if ($lastSpace !== false) {
$split = substr($split, 0, $lastSpace);
}
if (in_array(substr($split, -1, 1), array(','))) {
$split = substr($split, 0, -1);
}
$new_string .= $split . " ";
}
} else {
$l = $g;
break;
}
}
$result[] = $new_string;
}
return $result;
}
動作しますが、2列にいくつかのテキストを分割しようとすると、私は2番目の最初の列と未開封で閉じられていないタグを取得する:ここに私のコードです。これを修正するには?助けが必要!
文字列関数(または正規表現)を使用してHTMLで_anything_を行うと、いつでも問題が発生します。それは、あなたが得たものと望むもののいくつかのサンプル出力が役に立ちます。 :) – Herbert
closetags()は何をしますか?方法を教えてくれますか? – Chris
こんにちはZhlobopotam。私はちょうど同じ問題に取り組んできましたし、私の最終的な解決策を分かち合うことができれば幸いです。 @Chrisが言ったように - closetags()は何をしますか? – BaronGrivet