PHP字符串解析求助:从指定格式字符串提取企业名称
解决PHP提取指定字符串的问题
嘿,我来帮你搞定这个字符串提取的难题!你的目标字符串结构很清晰:[区域标签] 公司名称 - (编号),之前的方法之所以拿到了带编号的后半段,大概率是因为没精准定位到分割的边界。给你两种靠谱的解决方案:
方法一:正则表达式(最灵活)
正则能精准匹配这种有固定格式的字符串,直接捕获你需要的公司名称部分:
$inputStr = "[AZ - Domestic] Acme Technologies LLC - (8484383)"; // 正则模式:匹配方括号内容,然后捕获到" - ("之前的所有内容 if (preg_match('/\[[^\]]+\] (.*?) - \(/', $inputStr, $matches)) { $companyName = trim($matches[1]); echo $companyName; // 输出:Acme Technologies LLC }
正则说明:
\[[^\]]+\]:匹配开头的方括号区域([AZ - Domestic]),[^\]]+确保只匹配到闭合方括号为止(.*?):非贪婪匹配,精准抓取到- (之前的内容,避免把后面的编号也带进来trim():做个兜底,防止字符串前后有多余空格
方法二:字符串分割(更直观)
如果你的字符串格式永远固定,用分割方法更简单易懂:
$inputStr = "[AZ - Domestic] Acme Technologies LLC - (8484383)"; // 第一步:按"] "分割,拿到方括号后面的部分 $afterBracket = explode('] ', $inputStr)[1] ?? ''; // 第二步:按" - ("分割,拿到前面的公司名称 $companyName = explode(' - (', $afterBracket)[0] ?? ''; echo trim($companyName); // 输出:Acme Technologies LLC
分割说明:
- 用
]作为第一个分割符,直接跳过前面的区域标签 - 再用
- (作为第二个分割符,把公司名称和后面的编号彻底分开 ?? ''是PHP7+的空合并运算符,防止分割失败导致报错
这两种方法都能精准提取到你需要的Acme Technologies LLC,你可以根据自己的代码习惯选择~
内容的提问来源于stack exchange,提问作者three3
相关产品推荐
相关产品推荐

