我正在抓取一个网站并提取一些具有特殊字符的产品内容,例如®
特殊字符在浏览器中显示得很好但是它们弄乱了我的Omniture标签,特别是s.products标签。 s.products变量用分号划分它的部分,每个产品总共有6个部分(s.products =“Category”;“Product name”;“Quantity”;“Total Price”;“Incrementor”;“推销“)。如果产品名称中有®
,则会在s.products变量字符串中添加一个额外的分号。这会混淆所有内容并将字符串中的所有内容向右移动,这会影响数量和价。
有没有办法对产品名称使用网址编码,以便将®
转换为%AE
?我尝试了rawurlencode和htmlspecialchars函数,但它们没有工作
答案 0 :(得分:0)
同时使用html_entity_decode
和urlencode
:
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