• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

的preg_replace保持空间,如果开始用AZ与AZ

php 来源:kenken9999 3次浏览

结束时,我想带下划线的preg_replace保持空间,如果开始用AZ与AZ

但如果空间是由[AZ]包围

$string = '@@ @@ English something else'; 

我试图取代$string任何空间这一点,但它取代 “@@ @@” 到 “@ _ @”

$string = preg_replace('/[^a-z]\s[^a-z]/ui', '_' , $string); 

我想输出看起来像这样

@@[email protected]@_English something else 


===========解决方案如下:

我认为您不需要包含此任务的u unicode标志。

只需取消(*SKIP)(*FAIL)的不良空间资格,然后替换所有符合条件的空格。

代码:(Demo)(Pattern Demo)

$string = '英文 中文 English something else'; 
echo preg_replace('/[a-z] [a-z](*SKIP)(*FAIL)| /i','_',$string); 

输出:

英文_中文_English something else 

模式说明:

[a-z] [a-z](*SKIP)(*FAIL) < – 这意味着匹配并丢弃信空间信发生
| < – 这意味着“OR”
< – 这将匹配字符串(每个非废弃空间只有这些将被替换


两个备选方案与lookarounds也将工作(和更快): (Demo)

/(?<![a-z]) | (?![a-z])/i 

最快的所有的将是\B(单词边界元字符的否定版本):(Demo)

/\B | \B/ 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)