提问人:Luiz Jr 提问时间:2/10/2023 更新时间:2/10/2023 访问量:112
PHP 正则表达式 Get Text Between and inside 标签
PHP Regex Get Text Between and inside tags
问:
我在HTML代码上有这个标签:
text html [button link="google.com" color="#fff" text="this text here"] rest of html
我希望我能在PHP变量中拥有这个“按钮代码”的参数,但由于正则表达式,我不知道如何。
我尝试使用preg_match_all但没有成功。像这个:
preg_match_all('/color=(\w*)/i', $text, $color);
谢谢!
答:
1赞
MorganFreeFarm
2/10/2023
#1
你可以使用 preg_match_all():
<?php
$text = 'text html [button link="google.com" color="#fff" text="this text here"] rest of html';
preg_match_all('/\[button link="(.*?)" color="(.*?)" text="(.*?)"\]/i', $text, $matches);
$link = $matches[1][0];
$color = $matches[2][0];
$text = $matches[3][0];
echo $link;
echo $color;
echo $text;
输出:
google.com
#fff
this text here
0赞
Luiz Jr
2/10/2023
#2
谢谢大家。我将发布对我有用的结果。也许它对别人有帮助!这些选项已经是我的语言葡萄牙语。但你可以理解!
我需要脚本来解决同一 HTML 中多个标签的代码。
$matches = [];
preg_match_all('/\[botao link={(.*?)} texto={(.*?)} corfundo={(.*?)} corletra={(.*?)}\]/', $text, $matches);
foreach($matches[0] as $key => $match) {
$link = $matches[1][$key];
$texto = $matches[2][$key];
$corfundo = $matches[3][$key];
$corletra = $matches[4][$key];
$text = str_replace($match, '<a title="'.$texto.'" class="botao" href="'.$link.'" style="background-color: '.$corfundo.'; color: '.$corletra.';">'.$texto.'</a>', $text);
}
评论
if (preg_match_all('~(?:\G(?!^)|\[button)\s+(\w+)="([^"]*)"~', $text, $matches)) { print_r(array_combine($matches[1], $matches[2]));}
\w*
与 color 属性中的字符不匹配。或者属性值两边的引号。#