Mysql Resultados y manipulación de matriz

Estoy atascado trabajando en un problema y agradecería alguna orientación. Estoy trabajando con un viejo sistema que estaba codificado de manera horrible, y no hice ninguna validación o sanitización de la entrada del usuario, por lo que la base de datos con la que estoy trabajando es un poco extraña.

Tengo problemas con una columna llamada “tags”, que se usa para tags para artículos. Pero cada fila aparece así, y varía entre ellos:

etiqueta tag1 tag2 tag3

O

tag1, tag2, tag

Pero necesito combinarlos y ponerlos en una matriz que los liste por cuántas veces ocurre cada uno, así:

  • etiqueta (2)
  • tag1 (2)
  • tag2 (2)
  • tag3 (1)

Debido a que no soy el más astuto con php, ¿no estoy seguro de si estoy haciendo el problema correctamente?

Soy nuevo en la manipulación de matrices en esta escala, razón por la cual estoy atascado en este punto. Puede ver el siguiente ejemplo de lo que estoy haciendo a continuación:

$sql = "SELECT tags, approved FROM articles WHERE approved = '1' "; $result = mysql_query($sql); while( $rows = mysql_fetch_array($result) ) { $arr = $rows['tags']; $arr = str_replace(", ", " ", $arr); // attempting to clean up the data, so that each word appends with a space. $arr = str_replace(" ", " ", $arr); // Don't know what to do next, or if this is even the right way to do it. } 

Cualquier ayuda es apreciada.

Gracias, Lea

Tal vez esto sea útil. Modificó su código para tener $tagArr para cada consulta. Si necesita una matriz general de tags, sería un poco diferente, pero podría codificarse fácilmente utilizando lo siguiente.

 while( $rows = mysql_fetch_array($result) ) { $arr = $rows['tags']; $arr = str_replace(", ", " ", $arr); // attempting to clean up the data, so that each word appends with a space. // Don't know what to do next, or if this is even the right way to do it. $tagArr = array(); $current_tags = explode(" ", $arr); foreach($current_tags as $tag) { if(!array_key_exists($tag, $tagArr)) { $tagArr[$tag] = 1; } else { $tagArr[$tag] = $tagArr[$tag]++; } } // now $tagArr has the tag name as it's key, and the number of occurrences as it's value foreach($tagArr as $tag => $occurrences) { echo $tag . '(' . $occurrences . ')
'; } }