PHP string function in getting a specific line of a string in array string value

Solution:1

Try this code.

$val = array(
    '0' => '(Avelino Curato)avelinocurato@gmail.com',
    '1' => '(Ferdinand Balbin)ferdinand@apploma.com',
    '2' => 'ferdinand@apploma.com(Ferdinand Balbin)'

);

array_walk($val, function(&$value) { /* Use array walk to loop trough the array */

    $matches = array(); //create array to preserve matches after preg_match

    preg_match('/[A-Za-z0-9_-]+@[A-Za-z0-9_-]+\.([A-Za-z0-9_-][A-Za-z0-9_]+)/', $value, $matches); 

    $value = $matches[0]; //set the [0] match in value
});

print_r($val);

Solution:2

Try my little example

function try_explode(){

    $store_array = array();
    $val = array(
        '0' => 'avelinocurato@gmail.com(Avelino Curato)',
        '1' => 'ferdinand2apploma.com(Ferdinand Balbin)'
    );

    foreach ($val as $key => $value) {
        $names[$key] = preg_replace("/.*\(([^\)]+)\)$/is", "\$1", $value);
        $emails[$key] = preg_replace("/^([^\(]+).*/is", "\$1", $value);
        $store_array[$key] = "(".$names[$key].") ".$emails[$key];
    }
    var_dump($names);
    var_dump($emails);
    var_dump($store_array);
}

Solution:3

$string = 'avelinocurato@gmail.com(Avelino Curato)';
if(preg_match('~^(.+?)\\((.+?)\\)$~', $string, $matches)){
    var_dump(array_map('trim', $matches));
}elseif(preg_match('~^\\((.+?)\\)(.+?)$~', $string, $matches)){
    var_dump(array_map('trim', $matches));
}