簡體   English   中英

正則表達式替換html標簽中的第一個和最后一個空格

[英]Regex to replace first and last spaces in html tags

我的文字內含html標記。 在打開標簽后和關閉標簽前,我只需要替換一個或多個空格, 而無需替換其他任何東西

例如,如果我有:

la la la <h1>   text text </h1> bla bla bla <b> text </b>

它將變成:

la la la <h1>text text</h1> bla bla bla <b>text</b>

有什么建議么?

$pattern = '/(<[^\/]*?>)\s*|\s*(<\/.*?>)/';
$str = 'la la la <h1>   text text </h1> bla bla bla <b> text </b>';
$substitution = '$1$2';

$result = preg_replace($pattern, $substitution, $str);

echo "The result of the substitution is ".$result;

這將為您提供The result of the substitution is la la la <h1>text text</h1> bla bla bla <b>text</b>

此模式適用於任何空格。 同樣,空格也是可選的,例如此處的第二個示例:

https://regex101.com/r/9DFVIw/1

如果您確實想擁有一個正則表達式解決方案,則正則表達式可能不是您要實現的最佳工具

(?<=>) +([^<]*) +(?=<\/)

並用后向引用\\1替換匹配項以進行修剪。

演示: https : //regex101.com/r/MN6juN/3/

您還可以使用限制性更強的正則表達式:

<([^>]*)> +([^<]*) +<\/\1>

演示: https : //regex101.com/r/MN6juN/4

並用后向引用\\2替換匹配項以進行修剪。

否則,請尋求HTML解析器解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM