我想把我的句子分成两部分。因为它们由英文字母和非英文字母组成。我有正则表达式我在preg_split方法中使用正常的字母和字符。这虽然适用于相反的情况,但我只留下日语,而不是英语。
我使用的字符串:
すぐに諦めて昼寝をするかも知れない。 I may give up soon and just nap instead.
我的尝试:
$parts = preg_split("/[ -~]+$/", $cleanline); // $cleanline is the string above
print_r($parts);
我的结果
Array ( [0] => すぐに諦めて昼寝をするかも知れない。 [1] => )
正如你所看到的,我确实得到一个空的第二个值。如何将英语和非英语文本分成两个不同的字符串?为什么即使我使用正确的正则表达式(从我一直在测试的),英文文本也不会返回?
答案 0 :(得分:2)
尝试使用mb_split而不是preg_split函数。
mb_regex_encoding('UTF-8');
mb_internal_encoding("UTF-8");
$parts = mb_split("/[ -~]+$/", $cleanline);
答案 1 :(得分:2)
如果您在示例中显示两个字符串之间有两个空格,则可以使用简单的 <!-- Container (Pricing Section) -->
<div id="pricing" class="container-fluid">
<div class="text-center">
<h2>Pricing</h2>
<h4>blabla</h4>
</div>
<div class="row slideanim-'inline'">
{% for post in posts %}
<div class="col-sm-4 col-xs-12">
<div class="panel panel-default text-center">
<div class="panel-heading">
<h1><a href="">{{ post.offer_option}}</a></h1>
</div>
<div class="panel-body">
<p><strong>20</strong> {{post.prop_one}}</p>
<p><strong>20</strong>{{post.prop_two}} </p>
<p><strong>20</strong>{{post.prop_three}}</p>
</div>
<div class="panel-footer">
<h3>{{ post.price}}</h3>
<h4>{{ post.period}}</h4>
</div>
<button class="btn btn-lg">Sign Up</button>
</div>
</div>{% endfor %}
</div>
轻松拆分它们:
\s{2}
输出:
<?php
$s = "すぐに諦めて昼寝をするかも知れない。 I may give up soon and just nap instead.";
$s = preg_split("/\s{2}/", $s);
print_r($s);
?>
答案 2 :(得分:2)
您可以使用lookaround分割非字母和字母+空格
之间的边界$str = 'すぐに諦めて昼寝をするかも知れない。 I may give up soon and just nap instead.';
$parts = preg_split("/(?<=[^a-z])(?=[a-z\h])|(?<=[a-z\h])(?=[^a-z])/i", $str, 2);
print_r($parts);
<强>输出:强>
Array
(
[0] => すぐに諦めて昼寝をするかも知れない。
[1] => I may give up soon and just nap instead.
)