我想用{下划线
替换$string
中的任何空格
但如果空间被[a-z]
包围,则不是$string = '@@ @@ English something else';
我试过了,但它取代了#34; @@ @@"到" @ _ @"
$string = preg_replace('/[^a-z]\s[^a-z]/ui', '_' , $string);
我希望输出看起来像这样
@@_@@_English something else
答案 0 :(得分:2)
我认为您不需要为此任务添加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)
< - 这意味着匹配并丢弃字母空格字母出现
|
< - 这意味着"或"
< - 这将匹配字符串中的每个非丢弃空格(只有这些将被替换
两种具有外观的替代方案也可以(并且更快):( Demo)
/(?<![a-z]) | (?![a-z])/i
最快的将是\B
(字边界元字符的否定版本):( Demo)
/\B | \B/
答案 1 :(得分:0)
我不确定是什么语言,但我发现了这个:Use regular expression to match ANY Chinese character in utf-8 encoding
您的正则表达式需要包含(所有)中文字符,可以表示为:
\p{Han}
这是PHP关于Unicode字符的文档和支持的脚本列表:http://php.net/manual/en/regexp.reference.unicode.php
答案 2 :(得分:0)
测试第二和第三种模式也有效
我理解第二个,但第三个对我来说有点困难LOL
我需要去检查https://www.regular-expressions.info/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<div class="testimonial_block2">
<!-- progress bar -->
<div class="iva_progress_bar">
<div class="bar_title">5 REVIEWS</div>
<div class="bar_wrap">
<span class="bar_color" data-width="0">
<div class="percentage"></div>
</span>
</div>
<div class="users"></div>
</div>
<div class="iva_progress_bar">
<div class="bar_title">4 REVIEWS</div>
<div class="bar_wrap">
<span class="bar_color" data-width="100">
<div class="percentage"></div>
</span>
</div>
<div class="users"></div>
</div>
<div class="iva_progress_bar">
<div class="bar_title">3 REVIEWS</div>
<div class="bar_wrap">
<span class="bar_color" data-width="3">
<div class="percentage"></div>
</span>
</div>
<div class="users"></div>
</div>
<div class="iva_progress_bar">
<div class="bar_title">2 REVIEWS</div>
<div class="bar_wrap">
<span class="bar_color" data-width="6">
<div class="percentage"></div>
</span>
</div>
<div class="users"></div>
</div>
<div class="iva_progress_bar">
<div class="bar_title">1 REVIEWS</div>
<div class="bar_wrap">
<span class="bar_color" data-width="11">
<div class="percentage"></div>
</span>
</div>
<div class="users"></div>
</div>
</div>
输出
$string = '英文名 中文名 Peter Wong,John Tam,Sam Hu';
$string = preg_replace('/(?<![a-z]) | (?![a-z])/i', ',', $string);
因为CJK Name在每个char之间没有空格,所以这解决了我的大问题
像魅力一样工作;)
Thankyou @mickmackusa