You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何截取括号间字符串以提取punycode?

PHP提取括号内Punycode的解决方案

方法一:正则表达式(推荐)

利用正则精准匹配(和)之间的内容,批量处理多行文本效率很高:

$input = <<<TEXT
vizipipa.hu ekezet (xn--vzipipa-7ya.hu)
zoldtea.hu ekezet (xn--zldtea-wxa.hu)
uzletiakademia.hu ekezet (xn--zletiakadmia-jeb0x.hu)
ozon.hu ekezet (xn--zon-fna.hu)
TEXT;

// 匹配括号内的内容,捕获括号间的字符串
preg_match_all('/\((.*?)\)/', $input, $matches);

// $matches[1]即为提取到的所有Punycode数组
print_r($matches[1]);

运行后输出:

Array
(
    [0] => xn--vzipipa-7ya.hu
    [1] => xn--zldtea-wxa.hu
    [2] => xn--zletiakadmia-jeb0x.hu
    [3] => xn--zon-fna.hu
)

正则说明:\(转义匹配左括号,(.*?)是非贪婪捕获组(避免匹配多个括号的情况),\)转义匹配右括号。

方法二:字符串函数手动截取

如果不想依赖正则,可以通过定位括号位置来截取内容:

$lines = explode("\n", $input);
$punycodes = [];

foreach ($lines as $line) {
    $leftPos = strpos($line, '(');
    $rightPos = strpos($line, ')');
    // 确保两个括号都存在
    if ($leftPos !== false && $rightPos !== false) {
        // 从左括号后一位开始,截取到右括号前的内容
        $punycodes[] = substr($line, $leftPos + 1, $rightPos - $leftPos - 1);
    }
}

print_r($punycodes);

这个方法先按行拆分文本,逐行定位左右括号的位置,再截取中间的目标字符串。


内容的提问来源于stack exchange,提问作者Arany Péter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:37:01