0

我正在尝试使用带有 get 方法的 slug 函数

我有一个输入 name="title" 并使用 method="GET" 的表单。我正在尝试为函数参数提供标题名称,但它不起作用

请告诉我问题代码在哪里...

<html>
<body>
<?php
$title=$_GET['title'];
echo $title;
if(isset($_POST['submit'])) {
  function create_slug($string){
    $string = preg_replace( '/[«»""!?,.!@£$%^&*{};:()]+/', '', $string );
    $string = strtolower($string);
    $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
    return $slug;
  }
  $slug = create_slug($title);
  echo $slug;
}
?>
<form action="" method="GET">
<input type="text" name="title">
<input type="submit" value="convert">
</form>
</body>
</html>

提前致谢 .....

4

3 回答 3

1

使用$_GET['submit']代替$_POST['submit']您的表单的方法是 GET。

于 2013-10-12T16:14:46.100 回答
0

问题出在这一行

if(isset($_POST['submit'])) {
  ..
}

它永远不会评估为 true,因为您正在使用 GET 方法作为表单。

你应该把它改成

if(isset($_GET['submit'])) }
  ..
}
于 2013-10-12T16:09:47.123 回答
0

如果将表单方法设置为“GET”,则所有参数都将在 url 中发送。您也可以将方法设置为“POST”,您可以通过 POST 发送比 GET 更多的数据,并且它更安全一些(可能会在网络服务器上记录一个 url,以及它的所有参数,所以不要使用 GET 登录ETC)

使用 'isset()' 您可以检查变量是否存在。

if(isset($_GET['title']))
{
    $slug = createSlug($_GET['title']);
    // Do something with this...
}

但请确保从正确的方法类型(post 或 get)中获取输入字段值

<form method="POST" -> if(isset($_POST['title'])){ //... }
<form method="GET" ->  if(isset( $_GET['title'])){ //... }

一个创建 slug 的函数,(也去掉开头和结尾的 '-' 符号)

<?php
function createSlug($value)
{
   $slug = preg_replace('/[^A-Za-z0-9-]+/', '-', $value);

   while(strlen($slug) > 0 && substr($slug, 0, 1) == '-') {
     $slug = substr($slug, 1);
   }
   while(strlen($slug) > 0 && substr($slug, -1) == '-') {
     $slug = substr($slug, 0, strlen($slug)-1);
   }
   return strtolower($slug);
}

// Example:
$title = " - My first PAGE Title!!! :)";
$slug = createSlug($title);

echo $slug;
// Output: my-first-page-title
于 2014-06-24T20:19:42.773 回答