2010-01-01 2 views
0

J'utilise MagpieRSS pour analyser un flux Craigslist. Le champ "title" est:problème avec le stockage MySQL d'un Craigslist parse

*** TOUT NEUF acheter tous BLACKBERRY BOLD en quantité ~ ~ JAVELLIN ONYX (Gramercy) 100000 $

et j'utilise

if(preg_match("/\(*\)*\d+$/", $title, $matches)) 

pour connaître le prix. $matches[0] devrait avoir le prix, si je ne me trompe pas. Cependant, quand je le mets dans ma table MySQL (type de données DOUBLE), il arrive en 100. Il semble ne prendre que les 3 premiers chiffres après le $. J'ai exécuté ceci par preg_match dames partout sur le Web, mais nada.

Des pensées?

+1

Ceci est un cas de base de débogage. À quoi ressemble la requête générée complète qui insère la ligne? –

+0

Essayez d'utiliser le type de données DECIMAL MySQL pour stocker le prix. Votre regex n'est pas très bonne mais devrait fonctionner. – Sergei

+0

INSERT INTO ResultSet (search_id, titre, prix, SOURCE_URL) VALUES ("1", "*** acheter tous BRAND NEW BLACKBERRY BOLD en quantité ~ ~ JAVELLIN ONYX (Chelsea) 100000 $", "100,000.00", "http://newyork.craigslist.org/mnh/ele/1532363555.html ") – Shamoon

Répondre

1

Votre regex ne semble pas que cela devrait fonctionner. Étant donné le titre suivant:

*** TOUT NEUF acheter tous BLACKBERRY BOLD en quantité ~ ~ JAVELLIN ONYX (Gramercy) 100000 $

Si vous vouliez obtenir juste la valeur 100000, je d'utilisation:

/\$(\d+)$/ 
+0

Le problème avec ce sera le cas il y a d'autres s '$ dans la chaîne, non? – Shamoon

+0

Cela correspond à n'importe quel nombre après un symbole dollar à la fin d'une chaîne seulement. Sans en savoir assez sur le reste de vos titres, je ne peux pas dire à quel point c'est fiable. Par exemple, s'il existe des espaces entre le symbole et les nombres (ou d'autres données entre les nombres et la fin de la chaîne), cela ne correspondra pas. – mopoke