我正在创建这个string:

$s = '<http://example.org/data/'.$q.'>';

其中$q是请求参数。问题是,当我回声或print_r时,我得不到任何结果。另外,当我使用var_dump时,我只得到string(34)。我使用了几种方法,例如:

$s = "<http://example.org/data/$q>";

要么

$s = "<http://example.org/data/" . $q . ">";

但我得到了相同的结果。当我回应这个string时会出现同样的问题:

$query = "PREFIX sosa: <http://www.w3.org/ns/sosa/> PREFIX ex: <http://example.org/data/> PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?o WHERE {" . $s . "geo:isLocationOf ?o}";

我得到的地方:

PREFIX sosa: PREFIX ex: PREFIX geo: SELECT ?o WHERE {geo:isLocationOf ?o}

strings中使用网址似乎存在问题。

分析解答

使用echo htmlspecialchars($s);

转换预定义的字符

"<" (less than) and ">" (greater than)

通过htmlspecialchars function到HTML实体。

有关更多信息,请查看w3c用htmlspecialchars