PHP - 正则表达式替换所有非字母或 space 及其后的所有内容
PHP - Regex replace everything not letter or space and everything after it
我正在尝试编写一个正则表达式来替换 space 或 PHP 中的字母之后的所有内容。
我目前有以下
$_product[self::NAME] = preg_replace('^[a-z .*$]+$/i', '', $_product[self::NAME]);
它将字符串替换为空白字符串。
以下是我正在替换的一些示例
Milk - 50 Gallons
应该return
Milk
这个字符串
chocolate milk - 50 gallons
应该return
chocolate milk
即使连字符不存在,它也应该做同样的事情,意思是
Milk 50 gallons
应该return
Milk
我的正则表达式有什么问题?
它用空字符串替换了字符串证明你在发帖时打错了,你实际上有'/^[a-z .*$]+$/i'
正则表达式。
这也意味着您的正则表达式匹配任何包含 [a-z .*$]
集合中的一个或多个字符的字符串(ASCII 字母、space、点、*
或 $
符号)。
如果您需要一个 正则表达式来替换非 space 或字母 之后的所有内容,您需要
preg_replace('/\s*[^a-z\s].*$/i', '', $_product[self::NAME]);
详情:
\s*
- 零个或多个白色spaces
[^a-z\s]
- 除 ASCII 字母或白色以外的任何字符space
.*
- 除换行符外的任何零个或多个字符(添加 /s
修饰符也匹配换行符)
$
- 字符串结尾。
我正在尝试编写一个正则表达式来替换 space 或 PHP 中的字母之后的所有内容。
我目前有以下
$_product[self::NAME] = preg_replace('^[a-z .*$]+$/i', '', $_product[self::NAME]);
它将字符串替换为空白字符串。
以下是我正在替换的一些示例
Milk - 50 Gallons
应该return
Milk
这个字符串
chocolate milk - 50 gallons
应该return
chocolate milk
即使连字符不存在,它也应该做同样的事情,意思是
Milk 50 gallons
应该return
Milk
我的正则表达式有什么问题?
它用空字符串替换了字符串证明你在发帖时打错了,你实际上有'/^[a-z .*$]+$/i'
正则表达式。
这也意味着您的正则表达式匹配任何包含 [a-z .*$]
集合中的一个或多个字符的字符串(ASCII 字母、space、点、*
或 $
符号)。
如果您需要一个 正则表达式来替换非 space 或字母 之后的所有内容,您需要
preg_replace('/\s*[^a-z\s].*$/i', '', $_product[self::NAME]);
详情:
\s*
- 零个或多个白色spaces[^a-z\s]
- 除 ASCII 字母或白色以外的任何字符space.*
- 除换行符外的任何零个或多个字符(添加/s
修饰符也匹配换行符)$
- 字符串结尾。