2009-08-23 4 views
2

J'ai de gros fichiers texte 140k ou plus plein de paragraphes de texte et besoin d'insérer une phrase dans ce fichier à des intervalles aléatoires seulement si le fichier contient plus alors 200 mots.(PHP) insérer au hasard une phrase de 10 mots dans un document texte volumineux

La phrase que j'ai besoin d'insérer au hasard dans le document plus grand est de 10 mots.

J'ai un contrôle total sur le serveur qui exécute mon site LAMP afin que je puisse utiliser PHP ou une application de ligne de commande linux s'il en existe une qui ferait cela pour moi.

Toute idée de la meilleure façon d'aborder ce problème serait grandement appréciée.

Merci

Mark

+5

@scunliffe - Avec tout le respect que je vous dois, cela ne nous regarde pas. Nous sommes ici pour répondre à des questions de programmation, pas pour plonger dans les affaires personnelles des gens. – Sampson

+1

@Jonathan Sampson - mais nous ne voulons pas contribuer au spam. –

+5

@Shawn, scunliffe: Alors? N'importe quel spammeur avec une cellule de cerveau travaillante pourrait simplement nier l'accusation. Est-ce que vous vous attendez vraiment à un * "Oui, c'est pour le spam, s'il vous plaît ne répondez pas à ma question?" * En regardant le profil OPs il est en quelque sorte dans la synthèse vocale, cela pourrait être utilisé pour insérer des publicités/droits d'auteur/filigranes dans le texte avant de le prononcer. Vous pouvez faire beaucoup de choses avec un couteau en plus de tuer des gens. Ne soyez pas paranoïaque et fermez les questions pour rien, les gars. :) – deceze

Répondre

1

Vous pouvez utiliser str_word_count() pour obtenir le nombre de mots dans la chaîne. De là, déterminez si vous voulez insérer la chaîne ou non. Quant à l'insérer "au hasard", cela pourrait être dangereux. Voulez-vous dire que vous voulez l'insérer dans quelques zones aléatoires? Si oui, charger le contenu du fichier en tant que tableau avec file() et insérez votre phrase ne importe où entre $file[0] et count($file);

+0

"Voulez-vous dire que vous voulez l'insérer dans quelques zones aléatoires?" Oui, c'est ce que je pensais qu'il fallait faire. Merci Mark –

0

Le code suivant devrait faire l'affaire pour localiser et insérer des chaînes dans des endroits aléatoires. De là, vous auriez juste besoin de réécrire le fichier. C'est une façon très grossière et qui ne tient pas compte de la ponctuation ou quoi que ce soit de ce genre, donc une mise au point sera probablement nécessaire.

$save = array(); 
$words = str_word_count(file_get_contents('somefile.txt'), 1); 

if (count($words) <= 200) 
    $save = $words; 
else { 
    foreach ($words as $word) { 
    $save[] = $word; 
    $rand = rand(0, 1000); 
    if ($rand >= 100 && $rand <= 200) 
     $save[] = 'some string'; 
    } 
} 

$save = implode(' ', $save); 

Cela génère un nombre aléatoire et vérifie s'il est compris entre 100 et 200 inclus et, le cas échéant, met dans la chaîne aléatoire. Vous pouvez modifier la plage du nombre aléatoire et celle de la vérification pour augmenter ou diminuer le nombre d'ajouts. Vous pouvez également implémenter un compteur pour faire quelque chose comme s'assurer qu'il y a au moins x mots entre chaque chaîne.

Encore une fois, cela ne tient pas compte de la ponctuation ou quoi que ce soit et suppose simplement que tous les mots sont séparés par des espaces. Donc, un réglage fin peut être nécessaire pour le perfectionner, mais cela devrait être un bon point de départ.

+0

Merci pour ce Steven, je l'apprécie et je vais essayer. Marque –

Questions connexes