ricercare data in un testo

Ciao a tutti,

sto cercando di fare uno script che cerchi una data all'interno di un testo.

La data può essere formattata in maniera diversa es 12/05/2007 oppure 12.05.2007

il mio intendo era di trovare / o il . all'interno del testo.

uno = explode ('.', $testo);

a questo punto uno è un array e dovrei vedere se ogni cella dell'array ha dei numeri

è giusto il procedimento??

grazie

 :bye:

inviato 9 anni fa
stellina
X 0 X

forse ti conviene usare una espressione regolare che cerca pattern di tipo " xx/xx/xxxxx " oppure " xx.xx.xxxx "

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Sì un'espressione regolare come questa (anche se non è molto rigorosa dovrebbe andare bene ugualmente):

$value = "Testo testo testo 22/22/2007 testo testo";

if (preg_match("@[0-9]{2}(\.|/)[0-9]{2}(\.|/)[0-9]{4}@", $value, $matches))  print_r  ($matches);
else  echo "No no";

 :bye:

risposto 9 anni fa
usecram
X 0 X

grazie per i suggerimenti

intanto avevo fatto un test usando questa espressione regolare

$reg_exp = "'[0-9]{1,2}+[./]([0-9]{1,2})+[./]([0-9]{2,4})'";

che in definitiva dovrebbe dire la stessa cosa.

E' possibile fare un controllo sui risultati in modo da non stampare 2 volte la stessa data (sebbene la stessa data sia presente 2 volte nel testo)??

grazie

risposto 9 anni fa
stellina
X 0 X

i doppioni li togli a posteriori, sull'array dei risultati. non puoi farlo dall'espressione regolare

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ok

ho inserito un controllo dopo e sono riuscita a togliere i duplicati.

risposto 9 anni fa
stellina
X 0 X
$value = "25/22/2007 testodddd testoiooo 02.12.2007 ciao ciaooooo 01/06/2007 22/22/2007 testo TESTO TXT DDD 22/22/2007 ";

preg_match_all("@[0-9][0-9](\.|/)[0-9]{2}(\.|/)[0-9]{4}@", $value, $matches);

$nbb = count($matches[0]);

for($y=0; $y<$nbb; $y++)
{
  if ($matches[0][$y] != $matches[0][$y++])
    echo $matches[0][$y] . "<br/>";
  else echo $matches[0][$y] . "<br/>";
}

da un test più approfindito mi risulta non stampare tutte le date presenti su value

sbaglio qualcosa???

risposto 9 anni fa
stellina
X 0 X

Mah se vuoi semplicemente stampare tutte le date riscontrate basterebbe:

<?php
$value = "25/22/2007 testodddd testoiooo 02.12.2007 ciao ciaooooo 01/06/2007 22/22/2007 testo TESTO TXT DDD 22/22/2007 ";

preg_match_all("@[0-9][0-9](\.|/)[0-9]{2}(\.|/)[0-9]{4}@", $value, $matches);

$nbb = count($matches[0]);

for ($y = 0; $y<$nbb; $y++)  {
   echo $matches[0][$y]."<br />";
}
?>

 :bye:

risposto 9 anni fa
usecram
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda