Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP字符串函数,用于获取数组字符串值中字符串的特定行_Php_String_Codeigniter_Strtok - Fatal编程技术网

PHP字符串函数,用于获取数组字符串值中字符串的特定行

PHP字符串函数,用于获取数组字符串值中字符串的特定行,php,string,codeigniter,strtok,Php,String,Codeigniter,Strtok,我想在数组字符串值中获取字符串的特定行。示例:(Avelino Curato)avelinocurato@gmail.com。在这个示例字符串中,我只想获取字符串的电子邮件地址部分。我尝试过使用explode函数,但我不希望它将字符串存储在数组的括号中,因为我不再使用它了。我尝试使用strtok,但当字符串看起来像这样时,strtok函数似乎可以完美地工作->avelinocurato@gmail.com(Avelino Curato)。如何利用strtok函数获取字符串值中字符串的电子邮件地址

我想在数组字符串值中获取字符串的特定行。示例:(Avelino Curato)avelinocurato@gmail.com。在这个示例字符串中,我只想获取字符串的电子邮件地址部分。我尝试过使用explode函数,但我不希望它将字符串存储在数组的括号中,因为我不再使用它了。我尝试使用strtok,但当字符串看起来像这样时,strtok函数似乎可以完美地工作->avelinocurato@gmail.com(Avelino Curato)。如何利用strtok函数获取字符串值中字符串的电子邮件地址部分(Avelino Curato)avelinocurato@gmail.com?如果不是,我将使用什么其他字符串函数来处理这个问题? 这是我的代码及其相应的输出

function try_explode(){

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

);

for($i=0;$i<sizeof($val);$i++){

  $store_array[$i] = strtok($val[$i],')');

}

var_dump($store_array);
}
我将如何能够使用strtok仅仅获得电子邮件地址的一部分?如果没有,我可以使用什么其他字符串函数来实现此功能?非常感谢

$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));
}
^试试这个正则表达式非常棒。

PS:字符串标记化是。。。不是为你所做的!保持生活简单,学习正则表达式

^试试这个正则表达式非常棒。

PS:字符串标记化是。。。不是为你所做的!保持你的生活简单,学习正则表达式,试试下面的代码

$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);
试试这个代码

$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);
试试我的小例子

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);
}
试试我的小例子

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);
}
[[]]

对于第二个示例,您不需要使用
strok()
,因为您想要得到括号后面的内容,所以您可以使用
strstr()
来获得括号及其后面的任何内容,然后从字符串中切掉括号

如果你想有创意,你可以这样做:

$val = '(Avelino Curato)avelinocurato@gmail.com';
//$val = 'avelinocurato@gmail.com(Avelino Curato)';
$email = strip_tags(strtr($val, '()', '<>'));

echo $email; // avelinocurato@gmail.com
$val=”(Avelino Curato)avelinocurato@gmail.com';
//$val='1avelinocurato@gmail.com(Avelino Curato)“;
$email=strip_标签(strtr($val,,(),'');
echo$email;//avelinocurato@gmail.com
[[]]

这将在两种情况下都有效,并且不需要PHP使用正则表达式引擎。它基本上将开始和结束括号转换为开始和结束尖括号,然后将其视为HTML标记,然后运行strip标记将删除该部分。简单、快速、易懂

[[]]

对于第二个示例,您不需要使用
strok()
,因为您想要得到括号后面的内容,所以您可以使用
strstr()
来获得括号及其后面的任何内容,然后从字符串中切掉括号

如果你想有创意,你可以这样做:

$val = '(Avelino Curato)avelinocurato@gmail.com';
//$val = 'avelinocurato@gmail.com(Avelino Curato)';
$email = strip_tags(strtr($val, '()', '<>'));

echo $email; // avelinocurato@gmail.com
$val=”(Avelino Curato)avelinocurato@gmail.com';
//$val='1avelinocurato@gmail.com(Avelino Curato)“;
$email=strip_标签(strtr($val,,(),'');
echo$email;//avelinocurato@gmail.com
[[]]


这将在两种情况下都有效,并且不需要PHP使用正则表达式引擎。它基本上将开始和结束括号转换为开始和结束尖括号,然后将其视为HTML标记,然后运行strip标记将删除该部分。简单、快速且易于理解。

您可以在不同的变量中使用名称和电子邮件。我已经得到了电子邮件添加部分,给出了这个示例字符串=>avelinocurato@gmail.com(Avelino Curato)。问题在于此字符串值=>(Avelino Curato)avelinocurato@gmail.com. 无论如何,谢谢你的帮助。哦,很抱歉我没注意到你可以在不同的变量中包含姓名和电子邮件。我已经得到了电子邮件添加部分,给出了这个示例字符串=>avelinocurato@gmail.com(Avelino Curato)。问题在于此字符串值=>(Avelino Curato)avelinocurato@gmail.com. 不管怎样,谢谢你的帮助。哦,对不起我的疏忽哇。谢谢你。简单又干净。哇,谢谢你。简单明了的方法。我已经得到了电子邮件添加部分,给出了这个示例字符串=>avelinocurato@gmail.com(Avelino Curato)。问题在于此字符串值=>(Avelino Curato)avelinocurato@gmail.com. 无论如何,谢谢你的帮助。@Avelino帮你修好了。如果其中一个失败,请尝试翻转:)如果您打算使用一个regex来执行此操作,它会比较慢,并且您确实不应该使用它,除非您需要复杂的模式匹配,而PHP的字符串函数无法轻松完成,那么您应该使用
preg\u replace('/\([^]+\)/','',$str)
只需去掉括号部分,就可以将电子邮件留下。这两种情况都适用。请看,我已经收到了电子邮件添加部分,给出了以下示例字符串=>avelinocurato@gmail.com(Avelino Curato)。问题在于此字符串值=>(Avelino Curato)avelinocurato@gmail.com. 无论如何,谢谢你的帮助。@Avelino帮你修好了。如果其中一个失败,请尝试翻转:)如果您打算使用一个regex来执行此操作,它会比较慢,并且您确实不应该使用它,除非您需要复杂的模式匹配,而PHP的字符串函数无法轻松完成,那么您应该使用
preg\u replace('/\([^]+\)/','',$str)
只需去掉括号部分,就可以将电子邮件留下。这两种情况都适用。看见