【发布时间】:2022-07-24 17:54:27
【问题描述】:
我正在寻找一种方法来从字符串中删除 html 标签,并在发送字符串以使用 deepL 进行翻译后将它们放回相同的位置(如果 html 标签有属性,这不适用于它们)。
我将在下面发布解决方案。
【问题讨论】:
标签: php html string preg-replace preg-match
我正在寻找一种方法来从字符串中删除 html 标签,并在发送字符串以使用 deepL 进行翻译后将它们放回相同的位置(如果 html 标签有属性,这不适用于它们)。
我将在下面发布解决方案。
【问题讨论】:
标签: php html string preg-replace preg-match
解决方案:
如果你需要像我一样使用 DeepL 翻译字符串或做其他不需要字符串中的 html 标记的事情,那么你们可以按照相同的顺序删除和恢复所有 html 标签。
https://gist.github.com/miguelgisbert/7ef9ee15aa0cc1ba32ea5ed192e486c3
$str1 = "<p style='color:red;'>red</p><strong style='color:green;'>green</strong>";
$pattern = '/<[^>]+>/';
preg_match_all($pattern, $str1, $matches);
$replacements = $matches[0];
$str2 = preg_replace($pattern, '<>', $str1);
// TRanslate $str2 with DeepL or do whatever without html tags
$str3 = preg_replace_callback('/<>/', function($matches) use (&$replacements) {
return array_shift($replacements);
}, $str2);
echo "str1 ".$str1."<br>";
echo "str2 ".$str2."<br>";
echo "str3 ".$str3."<br>";
【讨论】: