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

标签 php string codeigniter strtok

我想获取数组字符串值中字符串的特定行。示例:(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);
}

输出:

enter image description here

上面的输出是我想要获得的结果,但是我如何能够使用此数组字符串值获得相同的输出?

$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/

相关文章:

PHP 和正则表达式在以元音开头的单词之前将 "a"转换为 "an"

php - 使用在 codeigniter 框架下构建的 oauth 2 保护我的 API

mysql - 如何使用 $this->db 编写以下 sql 查询

php - 从零开始的 Wordpress 主题

c++ - 如何确定 C++ 中字符串数组的大小?

php - PHP 中函数 md5() 的(默认)编码是什么?

c# - CSV 文件中的字符串问题

javascript - Codeigniter 中的 Ajax 仅更改 View 中的 div

php - 什么是SIGBABY?

使用 wkhtmltopdf 时 php shell exec 挂起