Мне нужно заменить пробелы на
внутри HTML-элементов. Пример:
<table atrr="zxzx"><tr> <td>adfa a adfadfaf></td><td><br /> dfa dfa</td> </tr></table>
должен стать
<table atrr="zxzx"><tr> <td>adfa a adfadfaf></td><td><br /> dfa dfa</td> </tr></table>
использовать регулярное выражение для сбора данных между тегами
(?:<\/?\w+)(?:\s+\w+(?:\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+)?)+\s*|\s*)\/?>([^<]*)?
затем замените ' '
на ' '
также ловить до и после html:
^([^<>]*)<? >([^<>]*)$
Редактировать: здесь вы идете ….
<?php $data="dasdad asd a <table atrr=\"zxzx\"><tr><td>adfa a adfadfaf></td><td><br /> dfa dfa</td></tr></table> asdasd s "; $exp="/((?:<\\/?\\w+)(?:\\s+\\w+(?:\\s*=\\s*(?:\\\".*?\\\"|'.*?'|[^'\\\">\\s]+)?)+\\s*|\\s*)\\/?>)([^<]*)?/"; $ex1="/^([^<>]*)(<?)/i"; $ex2="/(>)([^<>]*)$/i"; $data = preg_replace_callback($exp, create_function('$matches','return $matches[1].str_replace(" "," ",$matches[2]);'), $data); $data = preg_replace_callback($ex1, create_function('$matches','return str_replace(" "," ",$matches[1]).$matches[2];'), $data); $data = preg_replace_callback($ex2, create_function('$matches','return $matches[1].str_replace(" "," ",$matches[2]);'), $data); echo $data; ?>
он работает … слегка изменен, но он будет работать без изменений (но я не думаю, что вы понимаете код;))
Если вы работаете с php, вы можете сделать
$content = str_replace(' ', ' ', $content);
Поскольку токенизация HTML с регулярными выражениями может быть довольно сложной (особенно, если вы разрешаете SGML-причуды), вы должны использовать парсер HTML DOM, такой как библиотека DOM PHP . Затем вы можете запросить DOM, получить все текстовые узлы и применить на нем свою заменяющую функцию:
$doc = new DOMDocument(); $doc->loadHTML($str); $body = $doc->getElementsByTagName('body')->item(0); mapOntoTextNodes($body, function(DOMText $node) { $node->nodeValue = str_replace(' ', ' ', $node->nodeValue); });
Функция mapOntoTextNodes
– это настраиваемая функция, которую я определил в mapOntoTextNodes
Как заменить текстовые URL-адреса и исключить URL-адреса в тегах HTML?