2010-10-21 30 views
2

J'essaie de créer un script php qui entre les liens HTTP collés dans une zone de texte dans une ligne séparée dans une base de données. Plus exactement:Fractionner plusieurs lignes et les entrer dans une ligne séparée dans une base de données

La première page est où le textarea (name=textarea-linkfield) est, des liens vont être collé ici

http://www.stackoverflow.com 
http://www.yahoo.com 
.... 
http://google.com 

Les liens sont reportés dans le script php avec $linkfield=$_POST['textarea-linkfield']; et je voudrais que les liens soient inséré dans la base de données, chaque lien http par ligne. Nom de la base de données: site, charrue de nom de table, colonnes: id, url, ...

L.E. J'ai essayé comme preuve de concept:

$linkfield=$_POST['textarea-linkfield']; 
$strip=explode("\n",$linkfield); 
echo $strip[1]; 

mais je reçois 500 SERVEUR ERREUR INTERNE

L.E.2

La réponse:

// Split the string into pieces 
$pieces = explode("\n", str_replace(array("\n", "\r\n"), "\n", trim($linkfield))); 

// Build the top of the INSERT query 
$sql = "INSERT INTO `plow`(`url`) VALUES\n"; 

// Build the rest of the ;INSERT query by re-assembling the 
// pieces. 
$sql .= "('"; 
$sql .= implode("'), ('", $pieces); 
$sql .= "')"; 
mysql_query($sql) or die ('Error: ' . mysql_error()); 

mysql_close(); 

Merci à tous pour leur aide. Chris.

+2

Un 'exploser()' sur '" \ n "' devrait fonctionner, essayer, et si vous ne réussissez pas à revenir avec un code de votre mieux. – Wrikken

+0

J'ai mis à jour la question. Merci, Chris. – Chris19

+0

La zone de texte est-elle incluse dans un formulaire que vous soumettez? – Chetan

Répondre

1

Selon votre système, une nouvelle ligne peut être "\ n", "\ r \ n" ou "\ r".

Donner cette un coup:

$strip=explode("<br>", nl2br($linkfield)); 

ou peut-être plus sûr:

$strip=explode("\n", str_replace(array("\n", "\r\n"), "\n", $linkfield)); 
+0

Linux environnement et travaille avec la deuxième ligne de code, maintenant je dois trouver le code pour l'insérer dans la base de données. Merci PMV. – Chris19

+0

foreach ($ strip sous $ site Web) { mysql_query ("INSERT INTO table (url) VALUES ('$ site Web')"); } –

+0

Merci PMV. Fonctionne comme un charme. – Chris19

0

Utilisez preg_match pour trouver chaque URL et l'ajouter à la base de données. Exemple 3 sur cette page devrait faire l'affaire: http://php.net/manual/en/function.preg-match.php de cette façon, vous pouvez entrer des URL sans avoir à utiliser une nouvelle ligne. Si vous utilisez uniquement des URL, vous pouvez également ajouter un délimiteur après chaque URL, c'est-à-dire une virgule (qui n'est pas utilisée dans une URL) pour les faire exploser en utilisant l'idée explode() dans le commentaire.

+0

Je voudrais proposer un script qui peut fonctionner sans moi en ajoutant des virgules ou tout autre délimiteur et les liens doivent être entrés dans la zone de texte dans une nouvelle ligne. Merci, Chris. – Chris19