我想获取数组字符串值中字符串的特定行。示例:(Avelino Curato) [email protected] 。在此示例字符串中,我只想获取字符串的电子邮件地址部分。我尝试过使用爆炸函数,但我不希望它将字符串存储在数组的括号中,因为我将不再使用它。我尝试使用 strtok,但当字符串如下所示时,strtok 函数似乎可以完美工作 -> [email protected] (阿维利诺·库拉托)。我如何利用 strtok 函数获取此字符串值中字符串的电子邮件地址部分(Avelino Curato) [email protected] ?如果不是,我将使用什么其他字符串函数来处理这个问题? 这是我的代码及其相应的输出
function try_explode(){
$store_array = array();
$val = array(
'0' => '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9cfdeaf9f0f5f2f3ffe9eefde8f3dcfbf1fdf5f0b2fff3f1" rel="noreferrer noopener nofollow">[email protected]</a>(Avelino Curato)',
'1' => 'ferdinand2apploma.com(Ferdinand Balbin)'
);
for($i=0;$i<sizeof($val);$i++){
$store_array[$i] = strtok($val[$i],')');
}
var_dump($store_array);
}
输出:
上面的输出是我想要获得的结果,但是我如何能够使用此数组字符串值获得相同的输出?
$val = array(
'0' => '(Avelino Curato)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="81e0f7e4ede8efeee2f4f3e0f5eec1e6ece0e8edafe2eeec" rel="noreferrer noopener nofollow">[email protected]</a>',
'1' => '(Ferdinand Balbin)ferdinand2apploma.com'
);
我如何才能使用 strtok 来获取电子邮件地址部分?如果没有,我可以使用什么其他字符串函数来实现此目的?非常感谢
最佳答案
$val = '(Avelino Curato)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ceafb8aba2a7a0a1adbbbcafbaa18ea9a3afa7a2e0ada1a3" rel="noreferrer noopener nofollow">[email protected]</a>';
$email = ltrim(strstr($val, ')'), ')');
echo $email; // <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="610017040d080f0e02141300150e21060c00080d4f020e0c" rel="noreferrer noopener nofollow">[email protected]</a>
[[ DEMO ]]
对于第二个示例,您不会使用 strtok()
因为您想获取括号后面的内容,因此您将使用 strstr()
来获取括号以及其后的任何内容,然后从字符串中删除括号。
如果您想发挥创意,可以这样做:
$val = '(Avelino Curato)<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2b4a5d4e47424544485e594a5f446b4c464a424705484446" rel="noreferrer noopener nofollow">[email protected]</a>';
//$val = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="caabbcafa6a3a4a5a9bfb8abbea58aada7aba3a6e4a9a5a7" rel="noreferrer noopener nofollow">[email protected]</a>(Avelino Curato)';
$email = strip_tags(strtr($val, '()', '<>'));
echo $email; // <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="204156454c494e4f43555241544f60474d41494c0e434f4d" rel="noreferrer noopener nofollow">[email protected]</a>
[[ DEMO ]]
这适用于两种情况,并且不需要 PHP 使用正则表达式引擎。它基本上将左括号和右括号转换为左尖括号和右尖括号,然后将其视为 HTML 标签,然后运行 strip 标签将删除该部分。简单、快速且易于理解。
关于PHP字符串函数获取数组字符串值中字符串的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462798/