J'essaie de couper un morceau de texte à autour de 30 caractères. Si c'est plus court, je veux la chaîne précédente. En plus de cela, il a le code de style de forum po Je veux enlever tout entre crochets ([]
)Couper une chaîne vers le bas
J'utilise une paire de fonctions pour le faire. forum_extract
est ce que j'appelle.
function forum_extract($text) {
return str_replace("\n",'<br />', limit_text(preg_replace('/\[[^\]]+\]/', '', $text), 30));
}
function limit_text($text, $limit) {
if (strlen($text) <= $limit)
return $text;
$words = str_word_count($text, 2);
$pos = array_keys($words);
return substr($text, 0, $pos[$limit]) . '...';
}
Le problème vient limit_text
lorsque la condition $text
est plus courte que la limite. Tout ce que je reçois est un "...".
Pour que cela se produise, il doit avoir passé la clause de garde au limit_text
. Mais comment?
est ici un littéral qui est passé dans limit_text
mais sort comme « ... »:
Friend of ours paid 150€ the other day from Malaga. Spread across 4 people it didn't seem to bad, given it was a 8+ hour day for the driver, petrol etc.
Pourriez-vous fournir un exemple d'entrée qui déclenche le problème? – soulmerge
Ajouté un exemple cassé. – Oli
Ce texte n'est certainement pas plus court tan 30 Chars :) – soulmerge