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

时间:2019-03-15 07:51:55

标签: php mysql

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

有帮助吗?

3 个答案:

答案 0 :(得分:1)

使用正则表达式将所有内容匹配到第一个字母,然后捕获其余的内容。

h264_mp4toannexb

输出:

$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";
}

https://3v4l.org/4sZ9I

答案 1 :(得分:1)

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

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

答案 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