gpt4 book ai didi

php - 如何使用正则表达式删除没有数字和扩展名的任何内容?

转载 作者:行者123 更新时间:2023-12-02 00:33:36 24 4
gpt4 key购买 nike

我有这样的文件1248812832.v.doc,我想从数据库字段中删除字符串和点以使文件像这样1248812832.doc

我使用这个代码,但它不能完美工作,我仍然看到字符串和点

<?php
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'alsidik';

$conn = mysql_connect($host, $username, $password);

if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

if (!mysql_select_db($database)) {
echo "Unable to select " . $database . ": " . mysql_error();
exit;
}

$sql = "SELECT * FROM d_jobs";

$result = mysql_query($sql);

if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}

while ($row = mysql_fetch_assoc($result)) {
$id = $row['jb_id'];
$jb_cv = $row['jb_cv'];
$jb_rep = preg_replace('/[^.a-z0-9.]/','', $jb_cv);
$sql = "UPDATE d_jobs set jb_cv='" .$jb_rep. "' where jb_id=" . $id;
mysql_query($sql);
}

mysql_close($conn);
?>

谁能帮我..谢谢

最佳答案

你没有说你想如何处理这个字符串:

$str = '1212.v.a.doc';

...所以我假设您只需要该字符串的第一部分和最后一部分(其中各部分由“.”符号分隔)。有了这个,您可以使用...

$parts = explode('.', $str);
if (count($parts) > 2) {
$str = "$parts[0].{$parts[count($parts)-1]}";
}

...或

$str = preg_replace('#(?<=[.])([^.]*[.])+#', '', $str);

此行失败的原因:

preg_replace('/[^.a-z0-9.]/','', $jb_cv);

... 是您在这里使用负字符类(由 [^...] 部分定义)。换句话说,您可以从字符串中删除除点、小写拉丁字母和数字之外的所有符号。我想这绝对不是我们想要的;事实上,它根本不会改变示例中的原始字符串。

更新:看起来所有的杂耍都是徒劳的,你真正需要的只是数字和扩展名。好吧,也可以使用正则表达式来完成:

$str = '1212.v.a.doc';
$str = preg_replace('#^(\d+).*([.][^.]+)$#', '$1$2', $str);
echo $str;

...但事实上,我更喜欢 @jeroen 的解决方案,仅考虑可读性。 )

关于php - 如何使用正则表达式删除没有数字和扩展名的任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12710533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com