0

我正在使用谷歌翻译 API。我正在发送 html 字符串。翻译工作正常,但标签被弄乱了。

例如:

<b>Hello World</b>

变成

<b>Hello World</ b>

有时标签返回如下:

<b>Hello World< / b >

我在 PHP 中的努力(不起作用)

preg_replace('~<(\s*)/(.*)(\s*)>~is', '</$2>', $string);
4

3 回答 3

1

你可以使用:

$string = preg_replace(',<\s*/\s*(\w+)\s*>,s', '</$1>', $string);
于 2013-03-13T18:14:57.557 回答
1

请注意,正则表达式将解决这个确切的问题。但只能防止标签中的空格。不会保护您免受进一步的 HTML 问题的影响。

到目前为止,这只会起作用,但您可以尝试使用 HTML 解析器,例如Simple HTML DOM,它对无效 HTML 进行了一些处理。然后你可以从库中清理出 HTML。

于 2013-03-13T18:16:48.893 回答
0

尝试:

preg_replace('/<\s*\/\s*([^\s]*?)\s*>/', '</\\1>', $string);

现场演示:http ://regexr.com?3444s

于 2013-03-13T18:14:55.380 回答