URL编码:在PHP中将®转换为%AE?

时间:2012-08-24 15:58:43

标签: php

我正在抓取一个网站并提取一些具有特殊字符的产品内容,例如® 特殊字符在浏览器中显示得很好但是它们弄乱了我的Omniture标签,特别是s.products标签。 s.products变量用分号划分它的部分,每个产品总共有6个部分(s.products =“Category”;“Product name”;“Quantity”;“Total Price”;“Incrementor”;“推销“)。如果产品名称中有®,则会在s.products变量字符串中添加一个额外的分号。这会混淆所有内容并将字符串中的所有内容向右移动,这会影响数量和价。

有没有办法对产品名称使用网址编码,以便将®转换为%AE?我尝试了rawurlencode和htmlspecialchars函数,但它们没有工作

1 个答案:

答案 0 :(得分:0)

同时使用html_entity_decodeurlencode

php > echo urlencode(html_entity_decode("®"));
%AE

或者,您可以正则表达式替换所有htmlentities:

$pattern = "/&\w+;/";
$callback = function($matches) {
    return urlencode(html_entity_decode($matches[0]));
};
$subject = "® ©";
echo preg_replace_callback($pattern, $callback, $subject); // %AE %A9