匹配字符串中的单个字符,然后将其替换,php regex

时间:2018-11-29 02:27:21

标签: php regex

我有此代码:

<p><br>< br> </ strong> </ div>

因此,我需要匹配并替换仅位于“ ”之间的“ \ s”或“”(空),因此基本上并使用“ / / g”,但它匹配所有链,我只需要匹配单个字符并替换它。

顺便说一句,现在我正在使用下面的代码替换空字符,这意味着删除空字符。但是我想知道我问过是否可能。 谢谢。

//this code replace what I need    
$htmlfixed = preg_replace('/(?<=<\/)([ ]+)(?=[a-zA-Z]+>)/', '', $html);

2 个答案:

答案 0 :(得分:1)

这可能是实现此目标的一种方法,请参见{strong> EXPLANATION ,此处Regex

const regex = /(<\/?)[\s]/gm;
const str = `<p><br>< br> </ strong> </ div>`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log(result);

答案 1 :(得分:1)

您现有的代码也会删除该标签。您只需要删除</和标记之间的空格,即可使用(?<=</)\s+的正则表达式,即,以\s+开头的空格(</):

$html = '<p><br>< br> </ strong> </ div>';
$htmlfixed = preg_replace('#(?<=</)\s+#', '', $html);
echo $htmlfixed;

输出:

<p><br>< br> </strong> </div>

Demo on 3v4l.org