表arts
列title
- 示例:
1122 A TITLE
025 - ANOTHER TITLE
1/7 - SOME TITLE
1 4 5 - SOME ANOTHER TITLE
我需要在真正的标题之前删除所有内容。
删除的字符是 - 除字母以外的所有内容(标题应以字母开头)。
所以我需要这样的东西:
update arts set title = replace(title, 'everything except letters on the beginning', '');
在php
中使用mysql
或phpmyadmin
。
有帮助吗?
使用正则表达式匹配第一个字母以外的任何内容,然后捕获其余部分。
$arr = ["1122 A TITLE",
"025 - ANOTHER TITLE",
"1/7 - SOME TITLE",
"1 4 5 - SOME ANOTHER TITLE"];
foreach($arr as $val){
preg_match("/.*?([a-zA-Z].*)/", $val, $m);
echo $m[1] . "\n";
}
输出:
A TITLE
ANOTHER TITLE
SOME TITLE
SOME ANOTHER TITLE
您可以使用正则表达式过滤掉它:
$matches = []
if (preg_match("/^([0-9\-\_/ ]{0,})(.{0,})/", $string, $matches)) {
$filtered = $matches[2];
}
我认为最好在PHP端进行所有这些操作,因为mysql不支持这个,如果你真的想在MySQL端做这个,那么你需要编写自己的自定义函数,
尝试使用PHP代码,如下所示。
$string = '1 4 5 - SOME ANOTHER TITLE';
$pattern = '/^[^a-zA-Z]{1,}/';
$replacement = '';
$title = preg_replace($pattern, $replacement, $string);
$qry = 'update arts set title = "'.$title.'"';
echo $qry;
上面的代码将生成如下输出
更新艺术集标题=“另一个标题”