在 PHP 中构建 URL 的准备语句
Prepared statements for building a URL in PHP
构建 URL 时,您可以使用 urldecode 和 urlencode 来转义特定字符串,但我正在尝试构建以下形式的字符串:
$url = "/myobject/id=$id/property=$property"
等等。我的应用程序中有很多这样的 "URL building" 语句,我不想记住对每个 URL.[=15 中的每个变量进行 urlencode =]
在 PHP(和其他语言)中,您可以使用准备好的语句安全地构建 SQL 查询。例如:
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
此处的目的是转义 $firstname、$lastname 或 $email 中的任何讨厌的字符。
我想知道是否有办法做类似的事情。我正在寻找的代码是这样的:
$url = safe_build_url("/myobject/id=?/property=?", $id, $property)
我可以使用 printf 来构建这样的字符串,但它们不会被转义 属性。我也可以对整个 $url 变量使用 urlencode,但是这样会丢失我想保留的斜杠。
PHP 有 http_build_query()
为:
$data = array('foo'=>'bar',
'baz'=>'boom',
'php'=>'hypertext processor');
echo http_build_query($data); // foo=bar&baz=boom&php=hypertext+processor
使用 $encType
参数,您甚至可以选择要使用的 urlencoding 类型。如果您想要它的方式与 urlencode()
相同,则 select PHP_QUERY_RFC3986
用于 $enctype
。 (这不是默认值)。
构建 URL 时,您可以使用 urldecode 和 urlencode 来转义特定字符串,但我正在尝试构建以下形式的字符串:
$url = "/myobject/id=$id/property=$property"
等等。我的应用程序中有很多这样的 "URL building" 语句,我不想记住对每个 URL.[=15 中的每个变量进行 urlencode =]
在 PHP(和其他语言)中,您可以使用准备好的语句安全地构建 SQL 查询。例如:
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
此处的目的是转义 $firstname、$lastname 或 $email 中的任何讨厌的字符。
我想知道是否有办法做类似的事情。我正在寻找的代码是这样的:
$url = safe_build_url("/myobject/id=?/property=?", $id, $property)
我可以使用 printf 来构建这样的字符串,但它们不会被转义 属性。我也可以对整个 $url 变量使用 urlencode,但是这样会丢失我想保留的斜杠。
PHP 有 http_build_query()
为:
$data = array('foo'=>'bar',
'baz'=>'boom',
'php'=>'hypertext processor');
echo http_build_query($data); // foo=bar&baz=boom&php=hypertext+processor
使用 $encType
参数,您甚至可以选择要使用的 urlencoding 类型。如果您想要它的方式与 urlencode()
相同,则 select PHP_QUERY_RFC3986
用于 $enctype
。 (这不是默认值)。