我使用此代码将条目转换为小写,除了网址。
$fragments = preg_split( '/[ \n]/', $entry);
foreach ($fragments as &$fragment) {
if(filter_var($fragment, FILTER_VALIDATE_URL) === FALSE)
$fragment=mb_strtolower($fragment, "UTF-8");
}
unset($fragment);
$entry = implode(' ', $fragments);
问题是片段被空格或换行符分割,如上所示。但它们都只被空间破坏了。
根据分裂方法将其破坏的任何解决方案?
答案 0 :(得分:0)
preg_replace_callback()
对每个符合条件的子字符串执行自定义函数。$entry
,但您当然可以根据需要立即echo
返回值。代码:(Demo)
$entry = <<<ENTRY
Bob 1 https://www.example.com#Anchor
Joe 2 joe@exAmple.com
Sam 3 http://examPle.org
Ian 4 www.Example.net
Öna 5 eXample.info
Eve 6 Heart_in_a_Blender
ENTRY;
$entry = preg_replace_callback(
'/\S+/',
function($m) {
if (!filter_var($m[0], FILTER_VALIDATE_URL)) {
$m[0] = mb_strtolower($m[0], "UTF-8");
}
return $m[0];
},
$entry
);
echo $entry;
输出:
bob 1 https://www.example.com#Anchor
joe 2 joe@example.com
sam 3 http://examPle.org
ian 4 www.example.net
öna 5 example.info
eve 6 heart_in_a_blender