Tôi có một biểu mẫu HTML mà người dùng có thể nhập văn bản vào trường title
, sau đó tôi có PHP tạo tệp HTML có tên là
$FileName = preg_replace["/'/", '', $UserInput];
0Vấn đề của tôi là người dùng có thể nhập các không gian và dấu nháy đơn vào trường tiêu đề không thể được sử dụng trong tên tệp HTML. Tôi đã thay thế các không gian bằng dấu gạch dưới bằng cách sử dụng:
$FileName = str_replace[" ", "_", $UserInput];
Tuy nhiên, tôi dường như không thể loại bỏ các trích dẫn đơn? Tôi đã thử sử dụng:
$FileName = preg_replace["/'/", '', $UserInput];
Nhưng điều này đã lấy
$FileName = preg_replace["/'/", '', $UserInput];
1 và biến nó thành $FileName = preg_replace["/'/", '', $UserInput];
2.
Mark Elliot
73.4K21 Huy hiệu vàng140 Huy hiệu bạc159 Huy hiệu đồng21 gold badges140 silver badges159 bronze badges
Hỏi ngày 11 tháng 10 năm 2010 lúc 2:41Oct 11, 2010 at 2:41
1
Sử dụng phương thức str_replace hiện tại của bạn:
$FileName = str_replace["'", "", $UserInput];
Mặc dù rất khó để xem, đối số đầu tiên là một trích dẫn kép theo sau là một trích dẫn duy nhất theo sau là một trích dẫn kép. Đối số thứ hai là hai trích dẫn kép không có gì ở giữa.
Với str_replace, bạn thậm chí có thể có một loạt các chuỗi bạn muốn loại bỏ hoàn toàn:
$remove[] = "'";
$remove[] = '"';
$remove[] = "-"; // just as another example
$FileName = str_replace[ $remove, "", $UserInput ];
Đã trả lời ngày 11 tháng 10 năm 2010 lúc 2:44Oct 11, 2010 at 2:44
Hookedonwinterhookedonwinterhookedonwinter
12.3k18 Huy hiệu vàng59 Huy hiệu bạc74 Huy hiệu đồng18 gold badges59 silver badges74 bronze badges
Bạn có thể thay thế trong HTML Enteritiy:
$FileName = preg_replace["/'/", "\'", $UserInput];
Ông Polywhirl
37.5K12 Huy hiệu vàng81 Huy hiệu bạc127 Huy hiệu đồng12 gold badges81 silver badges127 bronze badges
Đã trả lời ngày 11 tháng 10 năm 2010 lúc 2:47Oct 11, 2010 at 2:47
Gilles Quenotgilles QuenotGilles Quenot
159K37 Huy hiệu vàng214 Huy hiệu bạc212 Huy hiệu Đồng37 gold badges214 silver badges212 bronze badges
Bạn cũng có thể hạn chế hơn trong việc loại bỏ các ký tự không được phép. Regex sau đây sẽ xóa tất cả các ký tự không phải là chữ cái, chữ số hoặc dấu gạch dưới:
$FileName = preg_replace['/[^\w]/', '', $UserInput];
Bạn có thể muốn làm điều này để đảm bảo khả năng tương thích tối đa cho tên tệp trên các hệ điều hành khác nhau.
Đã trả lời ngày 11 tháng 10 năm 2010 lúc 4:18Oct 11, 2010 at 4:18
JeremyjeremyJeremy
2.6311 Huy hiệu vàng22 Huy hiệu bạc28 Huy hiệu đồng1 gold badge22 silver badges28 bronze badges
$replace_str = array['"', "'", ","];
$FileName = str_replace[$replace_str, "", $UserInput];
Machavity ♦♦
30.2k26 Huy hiệu vàng88 Huy hiệu bạc99 Huy hiệu đồng26 gold badges88 silver badges99 bronze badges
Đã trả lời ngày 23 tháng 1 năm 2014 lúc 2:49Jan 23, 2014 at 2:49
NeoneoNeo
Huy hiệu bằng đồng 1131 Bạc71 silver badge7 bronze badges
1
Hãy thử cái này. Bạn có thể tước chỉ
$FileName = preg_replace["/'/", '', $UserInput];
3 và $FileName = preg_replace["/'/", '', $UserInput];
4 với:$FileName = str_replace[array['\'', '"'], '', $UserInput];
Đã trả lời ngày 20 tháng 2 năm 2017 lúc 15:59Feb 20, 2017 at 15:59
FaisalfaisalFaisal
4.4512 Huy hiệu vàng39 Huy hiệu bạc49 Huy hiệu đồng2 gold badges39 silver badges49 bronze badges
Tôi đã sử dụng hàm này htmlspecialchars cho các thuộc tính alt trong hình ảnh
Đã trả lời ngày 25 tháng 2 năm 2014 lúc 1:48Feb 25, 2014 at 1:48
IsaiasMacisaiasMacisaiasmac
3163 Huy hiệu bạc14 Huy hiệu Đồng3 silver badges14 bronze badges
$test = "{'employees':[{'firstName':'John', 'lastName':'Doe'},{'firstName':'John', 'lastName':'Doe'}]}" ;
$test = str_replace["'", '"', $test];
echo $test;
$jtest = json_decode[$test,true];
var_dump[$jtest];
Đã trả lời ngày 26 tháng 5 năm 2016 lúc 10:08May 26, 2016 at 10:08
Milind Moreyindind MoreyMilind Morey
2.05419 huy hiệu bạc15 huy hiệu đồng19 silver badges15 bronze badges