首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从数组中打印带有空格的文本?

如何从数组中打印带有空格的文本?
EN

Stack Overflow用户
提问于 2020-05-15 21:08:12
回答 2查看 49关注 0票数 1

在此数组中,我有一个ID为user的用户:

代码语言:javascript
运行
复制
$data = array( 'USER : Alex K. id:1', 'USER : Robert K. id:2');

id 1上的名字是"Alex K“在id 2上是

代码语言:javascript
运行
复制
foreach ( $data as $string )
{
    $_a = explode( ':', $string );
    $_b = explode( ' ', $_a[1] );
    $inf[$_a[2]] = $_b[1];
}

如果我使用print_r( $inf[ID] );,例如print_r( $inf[2] );,它只显示"Robert“,而不显示"Robert K.";

我试着用print_r( $_b );,我得到了所有的数据,我不知道如何打印完整的名字。

有人知道怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-15 21:12:46

如果数组成员的格式总是相同的,你可以简单的抓取字符串的特定部分,例如。使用preg_match

代码语言:javascript
运行
复制
foreach ($data as $string) {
    preg_match('/USER : (?<name>.*?) id:(?<id>\d+)/', $string, $match);

    printf('User: %s. His ID: %d', $match['name'], $match['id']);
}

否则,你必须在用“空格”分解输入字符串之前“清理”它--通过移除噪声,你不需要的东西,比如USER :部分(函数可能会派上用场:str_replace / substr等)。

如果你需要以某种方式操作这个列表,你必须首先索引它,例如。由id提供

代码语言:javascript
运行
复制
$users = [];

foreach ($data as $string) {
    preg_match('/USER : (?<name>.*?) id:(?<id>\d+)/', $string, $match);

    $users[$match['id']] = $match['name'];
}

printf('User name with ID 1 is: %s', $users[1]);
票数 2
EN

Stack Overflow用户

发布于 2020-05-15 21:42:55

如果您不打算对输入数组执行任何其他搜索,则不需要生成新的、重新结构化的关联查找数组。

preg_filter()将通过id找到您的用户,并在一步中隔离用户名。

代码:(Demo) (或if users may have colons in their names)

代码语言:javascript
运行
复制
$data = ['USER : Alex K. id:1', 'USER : Robert K. id:2'];
$id = 2;
var_export(current(preg_filter('/USER : ([^:]*) id:' . $id . '$/', '$1', $data)));

输出:

代码语言:javascript
运行
复制
'Robert K.'

preg_filter()将迭代所有元素并尝试修改它们,但由于模式末尾的$id变量只允许匹配/修改其中一个元素,因此它将是返回数据中的唯一元素。

current()将获取第一个/唯一的元素(如果有)。如果没有匹配项,则输出将为false

我使用var_export()来说明没有前导空格或尾随空格--您也可以使用echo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61820021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档