验证字符串中的空格

时间:2014-07-09 02:37:36

标签: php regex string strstr

我遇到字符串问题:

$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)

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用:

$replaced = preg_replace('~(?<! )(?=<a)|(?<=</a>)(?![ .,?!;:])~', ' ', $yourstring);

<强>解释

  • 在交替|的每一侧,我们寻找一个可插入空格的潜在位置,而不匹配任何实际字符
  • 在左侧,负面后瞻(?<! )断言当前位置之前的内容不是空格,前瞻(?=<a)断言后面的内容是<a
  • 在右边,lookbehind (?<=</a>)断言前面的是</a>,负前瞻(?! )声称后面的内容不是这些字符之一:.,?!;:
  • 我们将匹配的位置替换为(插入空格)

<强>参考

答案 1 :(得分:0)

$newString = str_replace(" <", "<", $string);

或更具体地说

$newString = str_replace(" <a", "<a", $string);