PHP - 替换撇号

PHP - Replace apostrophe

我目前正在开发一个包含姓名列表的网站。有些名字包含撇号 ',我想 link 使用他们的名字将它们转到网站。

我想 link 变成 url 这样的: example.com/(他们的名字)

然后,我首先将“ ”替换为“+”。所以 links 看起来像:example.com/john+doe

但是如果名字是 John'Doe,它会将 url 变成一个例子。com/john

并跳过姓氏。

我该如何解决这个问题?我尝试将 '\' 等更改为 html 代码、' 等等,但似乎没有任何效果。

这是我当前的代码:

$name = $row['name'];
$new_name = str_replace(
    array("'", "'"),
    array(" ", "+"),
    $name
);

echo "<td>" . $name . " <a href='http://www.example.com/name=" . $new_name . "' target='_blank'></a>" . "</td>";

我想要的样子:

John Doe Johnson ----> http://www.example.com/name=John+Doe+Johnson
John'Doe Johnson ----> http://www.example.com/name=John'Doe+Johnson

它将空格更改为 +,但如何修复撇号?有人知道吗?

echo urlencode("John'Doe Johnson");

return

John%27Doe+Johnson

您应该使用 PHP 的函数 urlencode、php.net/manual/en/function.urlencode.php.

<?php
$name = $row['name'];
//$urlname = urlencode('John\'Doe Johnson');
$urlname = urlencode($name);
echo "<td>$name<a href='http://www.example.com/name=$urlname' target='_blank'>$name</a></td>";

输出:

<td>John%27Doe+Johnson <a href='http://www.example.com/name=John%27Doe+Johnson' target='_blank'></a></td>