gpt4 book ai didi

php - 用于 HTML 标记转换的正则表达式

转载 作者:可可西里 更新时间:2023-11-01 00:04:37 27 4
gpt4 key购买 nike

由于某些原因,我想转换包含

<p style=“text-align:center; others-style:value;”>Content</p>

<center>Content</center>在 PHP 中。

文本对齐值可以是左对齐、右对齐或居中对齐。当有其他样式时,我想省略它们。

我如何在 PHP 中做到这一点?

编辑:

也许我在最初的问题中不够清楚。我的意思是我想用 text-align:center 转换内容由 <center> 包裹, 内容为 text-align:right<right> 包裹.当没有文本对齐样式时,我不需要对该 div 进行任何包装。谢谢。

最佳答案

您可以使用 preg_replace 来这样做:

测试 1:

$test = preg_replace('/(<.*”>)(.*)(<\/.*)/s', '<center>$2</center>', '<p style=“text-align:center; others-style:value;”>Content</p>');

var_dump($test);

输出 1:

它会返回:

string(24) "<center>Content</center>"

正则表达式 1:

The RegEx将您的输入分成三个捕获组,其中第一组和第三组可以分配给打开/关闭 p 标签。

enter image description here

正则表达式 2:

如果您愿意,您可以使用 RegEx 进一步扩展它对于您可能需要的任何其他标签/引用/内容。它会将带有任何引号(“或”或“或”)的任何标签分成五组,其中第四组($4)是您的目标内容。这种类型的 RegEx 通常可能对单次出现有用非循环字符串,因为它使用 (.*)

enter image description here

测试 2

$test = preg_replace('/<(.*)(\"|\”|\'|\’)>(.*)(<\/.*)/s', '<center>$4</center>', '<p style=“text-align:center; others-style:value;”>Content</p>');

var_dump($test);

正则表达式 3

如果您可能希望获得样式中的任何特定属性,this RegEx可能有帮助:

<(.*)(text-align:)(.*)(center|left|right|justify|inherit|none)(.*)(\"|\”|\'|\’)>(.*)(<\/.*)

enter image description here

测试 3

$tags = [
'0' => '<p style=“text-align:center; others-style:value;”>Content</p>',
'1' => '<div style=‘text-align:left; others-style:value;’ class=‘any class’>Any Content That You Wish</div>',
'2' => '<span style=\'text-align:right; others-style:value;\' class=\'any class\'>Any Content That You Wish</span>',
'3' => '<h1 style=“text-align:justify; others-style:value;” class="any class">Any Content That You Wish</h1>',
'4' => '<h2 style=“text-align:inherit; others-style:value;” class=“any class">Any Content That You Wish</h2>',
'5' => '<h3 style=“text-align:none; others-style:value;” class=“any class">Any Content That You Wish</h3>',
'6' => '<h4 style=“others-style:value;” class=“any class">Any Content That You Wish</h4>',
];

var_dump($tag);

$RegEx = '/<(.*)(text-align:)(.*)(center|left|right|justify|inherit|none)(.*)(\"|\”|\'|\’)>(.*)(<\/.*)/s';
foreach ($tags as $key => $tag) {
preg_match_all($RegEx, $tag, $matches);
foreach ($matches as $key1 => $match) {
if (sizeof($match[0]) > 0) {
$tags[$key] = preg_replace($RegEx, '<$4>$7</$4>', $tag);
break;
}

}

}

var_dump($tags);

输出3

它会返回:

array(7) {
[0]=>
string(24) "<center>Content</center>"
[1]=>
string(38) "<left>Any Content That You Wish</left>"
[2]=>
string(40) "<right>Any Content That You Wish</right>"
[3]=>
string(44) "<justify>Any Content That You Wish</justify>"
[4]=>
string(44) "<inherit>Any Content That You Wish</inherit>"
[5]=>
string(38) "<none>Any Content That You Wish</none>"
[6]=>
string(86) "<h4 style=“others-style:value;” class=“any class">Any Content That You Wish</h4>"
}

关于php - 用于 HTML 标记转换的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55700611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com