我遇到字符串问题:
$string = 'Hello<a href="#">there</a>, how are <a href="#">you</a>? I am<a href="#">good</a>'?
我想自动检测之前标记和字符之间没有空格,如果空格不可用则添加空格并将其更改为:
$string = 'Hello <a href="#">there</a>, how are <a href="#">you</a>? I am <a href="#">good</a>'?
使用PHP,正则表达式?还是strtr?
同样明智的是,对于结束,我们可以检查它是否会添加一个空格,如果它不存在另外一个字符同时忽略它是否,。!;:
</a>next -> </a> next (whitespace added)
</a>! -> </a>! (Unchanged)
感谢。
答案 0 :(得分:2)
您可以使用:
$replaced = preg_replace('~(?<! )(?=<a)|(?<=</a>)(?![ .,?!;:])~', ' ', $yourstring);
<强>解释强>
|
的每一侧,我们寻找一个可插入空格的潜在位置,而不匹配任何实际字符(?<! )
断言当前位置之前的内容不是空格,前瞻(?=<a)
断言后面的内容是<a
(?<=</a>)
断言前面的是</a>
,负前瞻(?! )
声称后面的内容不是这些字符之一:.,?!;:
(插入空格)<强>参考强>
答案 1 :(得分:0)
$newString = str_replace(" <", "<", $string);
或更具体地说
$newString = str_replace(" <a", "<a", $string);