1

I've a problem, with this function.

How can solve this?


My Code:

// Buscar Tema
$guardardato = array();

foreach($html->find('table', 2)->find('tr') as $datossc) {
    $title = $datossc->find('td', 1)->plaintext;
    if ($title != 'Song Title') {

        $guardardato[0] = $title;

        $guardardato[0] = preg_replace( "(-)", " - ", $guardardato[0]);
        $guardardato[0] = preg_replace( "(:)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([0-9]+)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(Current Song)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(pista)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(pista)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(www.[a-z]+.com.ar)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(www.[a-z]+.com)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(www.[a-z]+.net)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([a-z]+.com.ar)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([a-z]+.com)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([a-z]+.net)", "", $guardardato[0]);
        $guardardato[0] = ucwords(strtolower($guardardato[0]));

        function obtener($guardardato) {
            foreach ($guardardato as $k => $v){
                return $v;
            }
        }
        print obtener($guardardato);
    }
}

Error:

Fatal error: Cannot redeclare obtener() (previously declared in C:\xampp\htdocs...\index.php:43) in C:\xampp\htdocs...\index.php on line 43


Line 43:

function obtener($guardardato) {

I try with this posible solution but thats does work.

Can help me?

Thanks.

Community
  • 1
  • 1
Ferrmolina
  • 2,737
  • 2
  • 30
  • 46

2 Answers2

2

Your function definition (function obtener($guardardato)) is nested inside of your foreach loop, so every time it loops through an item in the array it will try to redefine the function obtener.

To fix this simply move your function outside of the foreach loop like so:

function obtener($guardardato) {
    foreach ($guardardato as $k => $v){
        return $v;
    }
}

// Buscar Tema
$guardardato = array();

foreach($html->find('table', 2)->find('tr') as $datossc) {
    $title = $datossc->find('td', 1)->plaintext;
    if ($title != 'Song Title') {

        $guardardato[0] = $title;

        $guardardato[0] = preg_replace( "(-)", " - ", $guardardato[0]);
        $guardardato[0] = preg_replace( "(:)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([0-9]+)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(Current Song)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(pista)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(pista)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(www.[a-z]+.com.ar)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(www.[a-z]+.com)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "(www.[a-z]+.net)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([a-z]+.com.ar)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([a-z]+.com)", "", $guardardato[0]);
        $guardardato[0] = preg_replace( "([a-z]+.net)", "", $guardardato[0]);
        $guardardato[0] = ucwords(strtolower($guardardato[0]));

        print obtener($guardardato);
    }
}
Prime
  • 2,410
  • 1
  • 20
  • 35
0

The error message suggests that obtener() is already a function defined elsewhere in your code. If you rename the function to be obtener_tema() and change the rest of the code to refer to that function, does that fix your problem?

Ken Irwin
  • 122
  • 1
  • 9