我正在使用存储在变量$title
中的UTF8编码中的文本内容。
使用preg_replace
,如果$title
字符串以以下结尾,如何附加额外空格:
?
或!
答案 0 :(得分:2)
答案 1 :(得分:2)
这应该可以解决问题:
preg_replace('/^(.*[\w?!])$/', "$1 ", $string);
本质上它的作用是如果字符串以一个不需要的字符结尾,它会附加一个空格。
如果字符串与模式不匹配,那么preg_replace()
将返回原始字符串 - 所以你仍然很好。
如果您需要展开不需要的结尾列表,可以将它们添加到字符块[\w?!]
答案 2 :(得分:1)
您可能想尝试下面的模式匹配,看看是否适合您。
<?php
// THE REGEX BELOW MATCHES THE ENDING LOWER & UPPER-CASED CHARACTERS, DIGITS
// AND SYMBOLS LIKE "?" AND "!" AND EVEN A DOT "."
// HOWEVER YOU CAN IMPROVISE ON YOUR OWN
$rxPattern = "#([\!\?a-zA-Z0-9\.])$#";
$title = "What is your name?";
var_dump($title);
// AND HERE, YOU APPEND A SINGLE SPACE AFTER THE MATCHED STRING
$title = preg_replace($rxPattern, "$1 ", $title);
var_dump($title);
// THE FIRST var_dump($title) PRODUCES:
// 'What is your name?' (length=18)
// AND THE SECOND var_dump($title) PRODUCES
// 'What is your name? ' (length=19) <== NOTICE THE LENGTH FROM ADDED SPACE.
您可以测试HERE。
干杯...
答案 3 :(得分:0)
你需要
$title=preg_replace("/.*[\w?!]$/", "\\0 ", $title);