且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何用& nbsp;替换HTML元素中的所有空格使用preg_replace?

更新时间:2022-06-14 23:11:48

使用正则表达式来捕获标签之间的数据

use regex to catch data between tags

(?:<\/?\w+)(?:\s+\w+(?:\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+)?)+\s*|\s*)\/?>([^<]*)?

然后将'' with '& nbsp;'

并在html之后:

also to catch before and after html :

^([^<>]*)<?

>([^<>]*)$

编辑:
go ...

here you go....

<?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(" ","&nbsp;",$matches[2]);'), $data);
$data = preg_replace_callback($ex1, create_function('$matches','return str_replace(" ","&nbsp;",$matches[1]).$matches[2];'), $data);
$data = preg_replace_callback($ex2, create_function('$matches','return $matches[1].str_replace(" ","&nbsp;",$matches[2]);'), $data);

echo $data;
?>

它的工作原理...略有修改,但它可以不加修改地工作(但我不认为你了解代码;))

it works... slightly modified but it would work without modifications (but i dont think youd understand the code ;) )