首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP在某个单词之后选择单词

PHP在某个单词之后选择单词
EN

Stack Overflow用户
提问于 2015-05-26 01:38:56
回答 2查看 323关注 0票数 0

大家好,我正在做一些事情,我要从字符串中提取一个人的ID,这是在那个人的名字后面。所以它是如何工作的,是一个POST值存储在一个变量中。在这种情况下,$user =“喜马托奇”。我想选择用户ID (如果这很重要的话,这是一个SteamID ),这个ID紧跟在他们名字后面的字符串中。但应该注意的是,有超过1000名球员和ID列在字符串中。

所以现在我有一条绳子

主机名称: Development版本: 14.09.08/24 5914安全udp/ ip : 192.168.1.4:27015 (公共ip: 135.120.128.85)地图: gm_flatgrass :0 x,0 y,0 z播放机:2 (16 max) #用户ip名称:udp 2 "Chalu87“2”STEAM_0:1:70377242 05:01 35 0活动192.168.1.4:27006 #4喜马托奇“STEAM_0:0:53654842 01:13 267 0 active 105.20.142.139:27005

因此,我基本上希望代码告诉PHP在$user之后将$user存储到一个新变量中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-26 01:58:36

假设数据结构是一致的,并且始终设置了$user,您可以使用regex来完成这一任务。

代码语言:javascript
复制
<?php
$user = 'Himatochi';
$data = 'hostname: Development Server version : 14.09.08/24 5914 secure udp/ip : 192.168.1.4:27015 (public ip: 135.120.128.85) map : gm_flatgrass at: 0 x, 0 y, 0 z players : 2 (16 max) # userid name uniqueid connected ping loss state adr # 2 "Chalu87" STEAM_0:1:70377242 05:01 35 0 active 192.168.1.4:27006 # 4 "Himatochi" STEAM_0:0:53654842 01:13 267 0 active 105.20.142.139:27005';
preg_match('~"' . preg_quote($user) . '"\s+(.*?)\s~', $data, $userid);
echo $userid[1];

输出:

STEAM_0:0:53654842

这将搜索"用户名(任何特殊的regex字符转义) ",然后至少有一个空白。在空白之后,它捕获所有内容,直到下一个空白为止。下一个空格字符似乎是最容易与userid末尾匹配的字符。

票数 3
EN

Stack Overflow用户

发布于 2015-05-26 03:24:37

如果格式是一致的,您可以只使用字符串函数,这应该比增加regex引擎的复杂性更快。不过,您应该运行一个快速的基准测试来确定。

代码语言:javascript
复制
<?php
$str = 'hostname: Development Server version : 14.09.08/24 5914 secure udp/ip : 192.168.1.4:27015 (public ip: 135.120.128.85) map : gm_flatgrass at: 0 x, 0 y, 0 z players : 2 (16 max) # userid name uniqueid connected ping loss state adr # 2 "Chalu87" STEAM_0:1:70377242 05:01 35 0 active 192.168.1.4:27006 # 4 "Himatochi" STEAM_0:0:53654842 01:13 267 0 active 105.20.142.139:27005';

$user = 'Himatochi';

$user = '"' . $user . '"';
$str = substr(strrchr($str, $user), 2);
$userId = substr($str, 0, strpos($str, " "));

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

https://stackoverflow.com/questions/30448140

复制
相关文章

相似问题

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