PHP实现提取文本中匹配指定模式的所有变量
用PHP提取文本中指定模式的变量解决方案
嘿,我来帮你搞定这个提取文本中变量的需求!你要找的是被%符号包裹的变量,比如%final_walk_through_date%这种,用PHP的正则表达式就能轻松实现。
核心实现思路
我们可以用preg_match_all()函数配合正则表达式,精准匹配并提取所有符合%变量名%格式的内容。这里的变量名假设是由字母、数字和下划线组成的(和你的示例一致),正则模式可以写成/%(\w+)%/。
完整代码示例
<?php // 你的原始文本内容 $originalText = 'Lorem Ipsum %final_walk_through_date% 只是印刷和排版行业的占位文本。%buyer_full_name% Lorem Ipsum自15世纪以来一直是该行业的标准占位文本,当时一位不知名的印刷工拿出一排活字,打乱顺序制作了一本活字样本册。它不仅历经五个世纪,还跨越到电子排版时代,基本保持不变。它在20世纪60年代随着Letras...的发布而普及...'; // 定义匹配模式:捕获%包裹的变量名 $regexPattern = '/%(\w+)%/'; // 执行全局匹配 preg_match_all($regexPattern, $originalText, $matchResults); // 提取到的变量名存储在$matchResults[1]中 $extractedVariables = $matchResults[1]; // 打印结果验证 print_r($extractedVariables); ?>
代码解释
$regexPattern = '/%(\w+)%/':这里的%是字面匹配符号,(\w+)是捕获组,用来匹配1个及以上的字母、数字或下划线(也就是变量名部分)。preg_match_all():这个函数会在文本中全局搜索所有符合模式的内容,把完整匹配项存在$matchResults[0],捕获到的变量名存在$matchResults[1]。- 运行这段代码后,你会得到一个包含两个元素的数组:
['final_walk_through_date', 'buyer_full_name'],正是你要提取的变量。
扩展说明
如果你的变量名里包含连字符(比如%user-name%),只需要把正则模式改成/%([\w-]+)%/就能支持这种情况啦。
内容的提问来源于stack exchange,提问作者LargeTuna
相关产品推荐
相关产品推荐

