从标题的开头删除不需要的字符

问题描述 投票:0回答:3

artstitle - 示例:

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中使用mysqlphpmyadmin

有帮助吗?

php mysql
3个回答
1
投票

使用正则表达式匹配第一个字母以外的任何内容,然后捕获其余部分。

$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

https://3v4l.org/4sZ9I


1
投票

您可以使用正则表达式过滤掉它:

$matches = []
if (preg_match("/^([0-9\-\_/ ]{0,})(.{0,})/", $string, $matches)) {
    $filtered = $matches[2];
}

1
投票

我认为最好在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;

上面的代码将生成如下输出

更新艺术集标题=“另一个标题”

Demo

© www.soinside.com 2019 - 2024. All rights reserved.