Соответствует одному символу в строке, затем заменяет его, php regex - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть этот код:

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

Итак, мне нужно сопоставить и заменить только "\ s" или "" (пустой), который находится между ""так в основном и использую" // g ", но это соответствует всей цепочке, и мне нужно для совпадения только один символ и заменить его.

Кстати, теперь я использую код ниже, чтобы заменить пустой, я имею в виду для удаленияпустой символ. Но я хочу знать, возможно ли то, что я спросил. Спасибо.

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

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Ваш существующий код также удалит тег.Вам просто нужно удалить пробел между </ и тегом, так что вы можете просто использовать регулярное выражение (?<=</)\s+, то есть пробел (\s+), перед которым стоит </:

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

Output:

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

Демонстрация на 3v4l.org

0 голосов
/ 29 ноября 2018

Это может быть способ достижения этого, см. ОБЪЯСНЕНИЕ здесь, в Регулярное выражение

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...